diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7cafbdb --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +coverage +node_modules \ No newline at end of file diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..657c572 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,156 @@ +module.exports = function(grunt) { + + require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks); + + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + + changelog: {}, + + bump: { + options: { + files: ['package.json'], + updateConfigs: [], + commit: true, + commitMessage: 'Release v%VERSION%', + commitFiles: ['package.json'], + createTag: true, + tagName: 'v%VERSION%', + tagMessage: 'Version %VERSION%', + push: true, + pushTo: 'origin', + gitDescribeOptions: '--tags --always --abbrev=1 --dirty=-d' + } + }, + + jshint: { + options: { + node: true, + browser: true, + esnext: true, + bitwise: true, + curly: true, + eqeqeq: true, + immed: true, + indent: 4, + latedef: true, + newcap: true, + noarg: true, + regexp: true, + undef: true, + unused: true, + trailing: true, + smarttabs: true, + globals: { + L: false, + + // Mocha + + describe: false, + it: false, + before: false, + after: false, + beforeEach: false, + afterEach: false, + chai: false, + expect: false, + sinon: false + } + }, + source: { + src: [ 'src/**', 'Gruntfile.js', 'package.json' ] + }, + test: { + src: [ 'test/SpecHelper.js', 'test/src/**' ], + }, + grunt: { + src: [ 'Gruntfile.js' ] + } + }, + + karma: { + travis: { + configFile: 'test/karma.conf.js', + background: false, + singleRun: true, + browsers: [ 'PhantomJS' ] + }, + development: { + configFile: 'test/karma.conf.js', + background: true + }, + unit: { + configFile: 'test/karma.conf.js', + background: false, + singleRun: true + } + }, + + watch: { + options : { + livereload: true + }, + source: { + files: [ + 'src/**', + 'test/**', + 'Gruntfile.js' + ], + tasks: [ 'build' ] + } + }, + + concat: { + dist: { + options: { + banner: '(function(window, document, undefined) {\n\n"use strict";\n\n', + footer: '\n\n}(window, document));' + }, + src: [ + 'src/ToolbarAction.js', + 'src/Toolbar.js', + 'src/ToolbarGroup.js', + 'src/Toolbar.*.js' + ], + dest: 'dist/Leaflet.Toolbar.js', + } + } + }); + + /* Run tests once. */ + grunt.registerTask('test', [ 'jshint', 'karma:test', 'coverage' ]); + + /* Default (development): Watch files and lint, test, and build on change. */ + grunt.registerTask('default', ['karma:development:start', 'watch']); + + grunt.registerTask('build', [ + 'jshint', + 'karma:development:run', + 'coverage', + 'concat:dist', + ]); + + grunt.registerTask('coverage', 'Custom commmand-line reporter for karma-coverage', function() { + var coverageReports = grunt.file.expand('coverage/*/coverage.txt'), + reports = {}, + report, i, len; + + for (i = 0, len = coverageReports.length; i < len; i++) { + report = grunt.file.read(coverageReports[i]); + if (!reports[report]) { + reports[report] = [coverageReports[i]]; + } else { + reports[report].push(coverageReports[i]); + } + } + + for (report in reports) { + if (reports.hasOwnProperty(report)) { + for (i = 0, len = reports[report].length; i < len; i++) { + grunt.log.writeln(reports[report][i]); + } + grunt.log.writeln(report); + } + } + }); +}; diff --git a/package.json b/package.json new file mode 100644 index 0000000..63ae752 --- /dev/null +++ b/package.json @@ -0,0 +1,69 @@ +{ + "name": "leaflet-illustrate", + "version": "0.0.2", + "description": "Rich annotation plugin for Leaflet.", + "scripts": { + "test": "grunt travis", + "coveralls": "PHANTOM=`ls ./coverage | grep PhantomJS` && cat \"coverage/$PHANTOM/lcov.info\" | coveralls" + }, + "devDependencies": { + "jshint": "2.5.x", + "uglify-js": "~2.4.3", + + "grunt": "~0.4.2", + "grunt-contrib-clean": "~0.5.0", + "grunt-contrib-coffee": "~0.10.1", + "grunt-contrib-concat": "0.4.x", + "grunt-contrib-jshint": "~0.6.3", + "grunt-contrib-less": "~0.11.0", + "grunt-contrib-nodeunit": "~0.2.0", + "grunt-contrib-uglify": "~0.2.2", + "grunt-contrib-watch": ">=0.3.1", + "grunt-mocha": "~0.4.11", + "grunt-karma": "0.8.3", + "grunt-bump": "0.0.14", + "matchdep": "~0.3.0", + + "chai": "1.9.1", + "mocha": "~1.14.0", + "sinon": "1.10.3", + + "karma": "0.12.16", + "karma-chrome-launcher": "^0.1.4", + "karma-firefox-launcher": "^0.1.3", + "karma-phantomjs-launcher": "0.1.4", + "karma-mocha": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-mocha-reporter": "0.2.7", + "karma-coverage": "0.2.4", + + "leaflet": "~0.7.0", + "leaflet-draw": "0.2.3", + + "coveralls": "2.11.1" + }, + "peerDependencies": { + "grunt-cli": "0.1.13" + }, + "directories": { + "examples": "./examples", + "distribution": "./dist", + "source": "./src", + "tests": "./test" + }, + "repository": { + "type": "git", + "url": "https://github.com/manleyjster/Leaflet.Illustrate.git" + }, + "keywords": [ + "maps", + "leaflet", + "client", + "annotate", + "illustrate", + "draw" + ], + "author": "Justin Manley", + "license": "MIT", + "readmeFilename": "README.md" +}