diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 5d022693..a0a20f5c 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -72,9 +72,11 @@ To set up the Leaflet build system, install Node then run the following commands
npm install -g jake
npm install
```
-
-You can build minified Leaflet by running `jake` (it will be built from source in the `dist` folder).
-For a custom build with selected components, open `build/build.html` in the browser and follow the instructions from there.
+or, if you prefer [`yarn`](https://yarnpkg.com/) over `npm`:
+```
+yarn install -g jake
+yarn install
+```
### Making Changes to Leaflet Source
@@ -96,6 +98,25 @@ Also, please make sure that you have [line endings configured properly](https://
Happy coding!
+### Using RollupJS
+
+The source javascript code for Leaflet is a few dozen files, in the `src/` directory.
+But normally, Leaflet is loaded in a web browser as just one javascript file.
+
+In order to create this file, run `npm run-script rollup` or `yarn run rollup`.
+
+You'll find `dist/leaflet-src.js` and `dist/leaflet.js`. The difference is that
+`dist/leaflet-src.js` has sourcemaps and it's not uglified, so it's better for
+development. `dist/leaflet.js` is uglified and thus is smaller, so it's better
+for deployment.
+
+When developing (or bugfixing) core Leaflet functionalities, it's common to use
+the webpages in the `debug/` directory, and run the unit tests (`spec/index.html`)
+in a graphical browser. This requires regenerating the bundled files quickly.
+
+In order to do so, run `npm run-script watch` or `yarn run rollup`. This will keep
+on rebuilding the bundles whenever any source file changes.
+
## Running the Tests
To run the tests from the command line,
@@ -158,7 +179,8 @@ code for every method, option or property there is a special code comment docume
that feature. In order to edit the API documentation, just edit these comments in the
source code.
-In order to generate the documentation, just run
+In order to generate the documentation, make sure that the development dependencies
+are installed (run either `npm install` or `yarn install`), then just run
```
jake docs
diff --git a/Jakefile.js b/Jakefile.js
index 35f4a02c..c71a7413 100644
--- a/Jakefile.js
+++ b/Jakefile.js
@@ -12,9 +12,9 @@ To run the tests, run "jake test". To build the documentation, run "jake docs".
For a custom build, open build/build.html in the browser and follow the instructions.
*/
-var build = require('./build/build.js'),
- buildDocs = require('./build/docs'),
- git = require('git-rev');
+var buildDocs = require('./build/docs'),
+ git = require('git-rev-sync'),
+ path = require('path');
function hint(msg, args) {
return function () {
@@ -29,16 +29,14 @@ function hint(msg, args) {
// Returns the version string in package.json, plus a semver build metadata if
// this is not an official release
-function calculateVersion(officialRelease, callback) {
+function calculateVersion(officialRelease) {
var version = require('./package.json').version;
if (officialRelease) {
- callback(version);
+ return version;
} else {
- git.short(function(str) {
- callback (version + '+' + str);
- });
+ return version + '+' + git.short();
}
}
@@ -48,16 +46,53 @@ task('lint', {async: true}, hint('Checking for JS errors...', 'src'));
desc('Check Leaflet specs source for errors with ESLint');
task('lintspec', {async: true}, hint('Checking for specs JS errors...', 'spec/suites'));
-desc('Combine and compress Leaflet source files');
-task('build', {async: true}, function (compsBase32, buildName, officialRelease) {
- calculateVersion(officialRelease, function(v){
- build.build(complete, v, compsBase32, buildName);
- });
-});
-
desc('Run PhantomJS tests');
task('test', ['lint', 'lintspec'], {async: true}, function () {
- build.test(complete);
+
+ var karma = require('karma'),
+ testConfig = {configFile : path.join(__dirname, './spec/karma.conf.js')};
+
+ testConfig.browsers = ['PhantomJSCustom'];
+
+ function isArgv(optName) {
+ return process.argv.indexOf(optName) !== -1;
+ }
+
+ if (isArgv('--chrome')) {
+ testConfig.browsers.push('Chrome');
+ }
+ if (isArgv('--safari')) {
+ testConfig.browsers.push('Safari');
+ }
+ if (isArgv('--ff')) {
+ testConfig.browsers.push('Firefox');
+ }
+ if (isArgv('--ie')) {
+ testConfig.browsers.push('IE');
+ }
+
+ if (isArgv('--cov')) {
+ testConfig.preprocessors = {
+ 'src/**/*.js': 'coverage'
+ };
+ testConfig.coverageReporter = {
+ type : 'html',
+ dir : 'coverage/'
+ };
+ testConfig.reporters = ['coverage'];
+ }
+
+ console.log('Running tests...');
+
+ var server = new karma.Server(testConfig, function(exitCode) {
+ if (!exitCode) {
+ console.log('\tTests ran successfully.\n');
+ complete();
+ } else {
+ process.exit(exitCode);
+ }
+ });
+ server.start();
});
desc('Build documentation');
diff --git a/bower.json b/bower.json
index a87c9f49..6b424959 100644
--- a/bower.json
+++ b/bower.json
@@ -6,7 +6,7 @@
"dist/leaflet.css",
"dist/leaflet-src.js"
],
- "ignore": [
+ "ignore": [
".*",
"CHANGELOG.json",
"FAQ.md",
diff --git a/build/build.html b/build/build.html
deleted file mode 100644
index f876582c..00000000
--- a/build/build.html
+++ /dev/null
@@ -1,227 +0,0 @@
-
-
-