Make a separate build:legacy target that runs buble

- `iD.js` for most browsers, `iD.legacy.js` for IE11/PhantomJS
- Skip buble plugin during normal development for faster builds
This commit is contained in:
Bryan Housel
2020-01-21 15:22:52 -05:00
parent 6bb2997306
commit 6a4a1d57a7
9 changed files with 255 additions and 221 deletions

View File

@@ -14,15 +14,15 @@ function buildAll() {
return _currBuild =
Promise.resolve()
.then(() => buildCSS())
.then(() => buildData())
.then(() => buildSrc())
.then(() => _currBuild = null)
.catch((err) => {
console.error(err);
_currBuild = null;
process.exit(1);
});
.then(() => buildCSS())
.then(() => buildData())
.then(() => buildSrc())
.then(() => _currBuild = null)
.catch((err) => {
console.error(err);
_currBuild = null;
process.exit(1);
});
}
module.exports = buildAll;

View File

@@ -18,19 +18,19 @@ function buildCSS() {
return _currBuild =
Promise.resolve()
.then(() => doGlob('css/**/*.css'))
.then((files) => doConcat(files, 'dist/iD.css'))
.then(() => {
console.timeEnd(END);
console.log('');
_currBuild = null;
})
.catch((err) => {
console.error(err);
console.log('');
_currBuild = null;
process.exit(1);
});
.then(() => doGlob('css/**/*.css'))
.then((files) => doConcat(files, 'dist/iD.css'))
.then(() => {
console.timeEnd(END);
console.log('');
_currBuild = null;
})
.catch((err) => {
console.error(err);
console.log('');
_currBuild = null;
process.exit(1);
});
}

View File

@@ -1,10 +1,9 @@
/* eslint-disable no-console */
const buble = require('@rollup/plugin-buble');
const colors = require('colors/safe');
const commonjs = require('rollup-plugin-commonjs');
const commonjs = require('@rollup/plugin-commonjs');
const includePaths = require('rollup-plugin-includepaths');
const json = require('rollup-plugin-json');
const nodeResolve = require('rollup-plugin-node-resolve');
const json = require('@rollup/plugin-json');
const nodeResolve = require('@rollup/plugin-node-resolve');
const rollup = require('rollup');
const shell = require('shelljs');
// const visualizer = require('rollup-plugin-visualizer');
@@ -24,18 +23,18 @@ function buildSrc() {
return _currBuild =
Promise.resolve()
.then(() => buildBundle())
.then(() => {
console.timeEnd(END);
console.log('');
_currBuild = null;
})
.catch((err) => {
console.error(err);
console.log('');
_currBuild = null;
process.exit(1);
});
.then(() => buildBundle())
.then(() => {
console.timeEnd(END);
console.log('');
_currBuild = null;
})
.catch((err) => {
console.error(err);
console.log('');
_currBuild = null;
process.exit(1);
});
}
@@ -66,8 +65,7 @@ function buildBundle() {
dedupe: ['object-inspect']
}),
commonjs(),
json({ indent: '' }),
buble(),
json({ indent: '' })
// viz causes src build to take about 3x longer; skip
// visualizer({
// filename: 'docs/statistics.html',

7
dist/index.html vendored
View File

@@ -21,11 +21,8 @@
newScript.onerror = checkScript;
var isIE11 = !!(navigator.userAgent.match(/Trident/) && !navigator.userAgent.match(/MSIE/));
if (isIE11) {
newScript.src = 'iD.min.js';
} else {
newScript.src = 'iD.min.js';
}
// currently all minified files are legacy ES5 because of uglifyJS
newScript.src = isIE11 ? 'iD.min.js' : 'id.min.js';
document.getElementsByTagName('head')[0].appendChild(newScript);

View File

@@ -21,11 +21,7 @@
newScript.onerror = checkScript;
var isIE11 = !!(navigator.userAgent.match(/Trident/) && !navigator.userAgent.match(/MSIE/));
if (isIE11) {
newScript.src = 'dist/iD.js';
} else {
newScript.src = 'dist/iD.js';
}
newScript.src = isIE11 ? 'dist/iD.legacy.js' : 'dist/iD.js';
document.getElementsByTagName('head')[0].appendChild(newScript);

View File

@@ -12,11 +12,12 @@
"scripts": {
"all": "npm-run-all -s clean build dist",
"build": "node --max-old-space-size=4096 build.js",
"build:legacy": "rollup --config rollup.config.legacy.js",
"clean": "shx rm -f dist/*.js dist/*.map dist/*.css dist/img/*.svg",
"dist": "npm-run-all -p dist:**",
"dist": "npm-run-all -p build:legacy dist:**",
"dist:mapillary": "shx mkdir -p dist/mapillary-js && shx cp -R node_modules/mapillary-js/dist/* dist/mapillary-js/",
"dist:pannellum": "shx mkdir -p dist/pannellum-streetside && shx cp -R node_modules/pannellum/build/* dist/pannellum-streetside/",
"dist:min": "uglifyjs dist/iD.js --compress --mangle --output dist/iD.min.js",
"dist:min": "uglifyjs dist/iD.legacy.js --compress --mangle --output dist/iD.min.js",
"dist:svg:id": "svg-sprite --symbol --symbol-dest . --shape-id-generator \"iD-%s\" --symbol-sprite dist/img/iD-sprite.svg \"svg/iD-sprite/**/*.svg\"",
"dist:svg:community": "svg-sprite --symbol --symbol-dest . --shape-id-generator \"community-%s\" --symbol-sprite dist/img/community-sprite.svg node_modules/osm-community-index/dist/img/*.svg",
"dist:svg:fa": "svg-sprite --symbol --symbol-dest . --symbol-sprite dist/img/fa-sprite.svg svg/fontawesome/*.svg",
@@ -28,7 +29,7 @@
"imagery": "node data/update_imagery",
"lint": "eslint *.js test/spec modules",
"start": "node --max-old-space-size=4096 server.js",
"test": "npm-run-all -s lint build test:**",
"test": "npm-run-all -s lint build:legacy test:**",
"test:phantom": "phantomjs --web-security=no node_modules/mocha-phantomjs-core/mocha-phantomjs-core.js test/phantom.html spec",
"test:iD": "phantomjs --web-security=no node_modules/mocha-phantomjs-core/mocha-phantomjs-core.js test/index.html spec",
"translations": "node data/update_locales"
@@ -65,6 +66,9 @@
"@ideditor/temaki": "~3.12.0",
"@mapbox/maki": "^6.0.0",
"@rollup/plugin-buble": "^0.21.0",
"@rollup/plugin-commonjs": "^11.0.1",
"@rollup/plugin-json": "^4.0.1",
"@rollup/plugin-node-resolve": "^7.0.0",
"chai": "^4.1.0",
"cldr-core": "36.0.0",
"cldr-localenames-full": "36.0.0",
@@ -90,11 +94,8 @@
"osm-community-index": "2.0.0",
"phantomjs-prebuilt": "~2.1.11",
"request": "^2.88.0",
"rollup": "~1.27.2",
"rollup-plugin-commonjs": "^10.1.0",
"rollup": "~1.29.1",
"rollup-plugin-includepaths": "~0.2.3",
"rollup-plugin-json": "~4.0.0",
"rollup-plugin-node-resolve": "~5.2.0",
"rollup-plugin-visualizer": "~3.3.1",
"shelljs": "^0.8.0",
"shx": "^0.3.0",

43
rollup.config.legacy.js Normal file
View File

@@ -0,0 +1,43 @@
/* eslint-disable no-console */
import buble from '@rollup/plugin-buble';
import commonjs from '@rollup/plugin-commonjs';
import includePaths from 'rollup-plugin-includepaths';
import json from '@rollup/plugin-json';
import nodeResolve from '@rollup/plugin-node-resolve';
export default {
input: './modules/id.js',
onwarn: onWarn,
output: {
file: 'dist/iD.legacy.js',
format: 'iife',
sourcemap: false,
strict: false
},
plugins: [
includePaths({
paths: ['node_modules/d3/node_modules'], // npm2 or windows
include: {
'martinez-polygon-clipping': 'node_modules/martinez-polygon-clipping/dist/martinez.umd.js'
}
}),
nodeResolve({
mainFields: ['module', 'main'],
browser: false,
dedupe: ['object-inspect']
}),
commonjs(),
json({ indent: '' }),
buble()
]
};
function onWarn(warning, warn) {
// skip certain warnings
if (warning.code === 'CIRCULAR_DEPENDENCY') return;
if (warning.code === 'EVAL') return;
// Use default for everything else
console.log(warning.code);
warn(warning);
}

View File

@@ -2,169 +2,168 @@
<html>
<head>
<meta charset='utf-8'>
<title>Mocha Tests</title>
<link rel='stylesheet' href='../node_modules/mocha/mocha.css'>
<link rel='stylesheet' href='../dist/iD.css'>
<!-- <script src='../node_modules/d3/build/d3.js'></script> -->
<meta charset='utf-8'>
<title>Mocha Tests</title>
<link rel='stylesheet' href='../node_modules/mocha/mocha.css'>
<link rel='stylesheet' href='../dist/iD.css'>
<!-- <script src='../node_modules/d3/build/d3.js'></script> -->
</head>
<body style="overflow:scroll">
<div id='mocha'></div>
<div id='mocha'></div>
<script src='../node_modules/mocha/mocha.js'></script>
<script src='../node_modules/chai/chai.js'></script>
<script src='../node_modules/sinon/pkg/sinon.js'></script>
<script src='../node_modules/sinon-chai/lib/sinon-chai.js'></script>
<script src='../node_modules/happen/happen.js'></script>
<script src='../node_modules/mocha/mocha.js'></script>
<script src='../node_modules/chai/chai.js'></script>
<script src='../node_modules/sinon/pkg/sinon.js'></script>
<script src='../node_modules/sinon-chai/lib/sinon-chai.js'></script>
<script src='../node_modules/happen/happen.js'></script>
<script>
if (typeof initMochaPhantomJS === 'function') {
initMochaPhantomJS()
}
</script>
<script>
if (typeof initMochaPhantomJS === 'function') {
initMochaPhantomJS()
}
</script>
<!-- include source files here... -->
<script src='../dist/iD.js'></script>
<!-- include source files here... -->
<script src='../dist/iD.legacy.js'></script>
<script src='spec/spec_helpers.js'></script>
<script src='spec/spec_helpers.js'></script>
<!-- include spec files below... -->
<script src='spec/actions/add_entity.js'></script>
<script src='spec/actions/add_member.js'></script>
<script src='spec/actions/add_midpoint.js'></script>
<script src='spec/actions/change_member.js'></script>
<script src='spec/actions/change_preset.js'></script>
<script src='spec/actions/change_tags.js'></script>
<script src='spec/actions/circularize.js'></script>
<script src='spec/actions/connect.js'></script>
<script src='spec/actions/copy_entities.js'></script>
<script src='spec/actions/delete_member.js'></script>
<script src='spec/actions/delete_multiple.js'></script>
<script src='spec/actions/delete_node.js'></script>
<script src='spec/actions/delete_relation.js'></script>
<script src='spec/actions/delete_way.js'></script>
<script src='spec/actions/discard_tags.js'></script>
<script src='spec/actions/disconnect.js'></script>
<script src='spec/actions/join.js'></script>
<script src='spec/actions/merge.js'></script>
<script src='spec/actions/merge_nodes.js'></script>
<script src='spec/actions/merge_polygon.js'></script>
<script src='spec/actions/merge_remote_changes.js'></script>
<script src='spec/actions/move.js'></script>
<script src='spec/actions/move_node.js'></script>
<script src='spec/actions/noop.js'></script>
<script src='spec/actions/orthogonalize.js'></script>
<script src='spec/actions/restrict_turn.js'></script>
<script src='spec/actions/reverse.js'></script>
<script src='spec/actions/revert.js'></script>
<script src='spec/actions/split.js'></script>
<script src='spec/actions/straighten_nodes.js'></script>
<script src='spec/actions/straighten_way.js'></script>
<script src='spec/actions/unrestrict_turn.js'></script>
<script src='spec/actions/reflect.js'></script>
<script src='spec/actions/extract.js'></script>
<script src='spec/actions/upgrade_tags.js'></script>
<!-- include spec files below... -->
<script src='spec/actions/add_entity.js'></script>
<script src='spec/actions/add_member.js'></script>
<script src='spec/actions/add_midpoint.js'></script>
<script src='spec/actions/change_member.js'></script>
<script src='spec/actions/change_preset.js'></script>
<script src='spec/actions/change_tags.js'></script>
<script src='spec/actions/circularize.js'></script>
<script src='spec/actions/connect.js'></script>
<script src='spec/actions/copy_entities.js'></script>
<script src='spec/actions/delete_member.js'></script>
<script src='spec/actions/delete_multiple.js'></script>
<script src='spec/actions/delete_node.js'></script>
<script src='spec/actions/delete_relation.js'></script>
<script src='spec/actions/delete_way.js'></script>
<script src='spec/actions/discard_tags.js'></script>
<script src='spec/actions/disconnect.js'></script>
<script src='spec/actions/join.js'></script>
<script src='spec/actions/merge.js'></script>
<script src='spec/actions/merge_nodes.js'></script>
<script src='spec/actions/merge_polygon.js'></script>
<script src='spec/actions/merge_remote_changes.js'></script>
<script src='spec/actions/move.js'></script>
<script src='spec/actions/move_node.js'></script>
<script src='spec/actions/noop.js'></script>
<script src='spec/actions/orthogonalize.js'></script>
<script src='spec/actions/restrict_turn.js'></script>
<script src='spec/actions/reverse.js'></script>
<script src='spec/actions/revert.js'></script>
<script src='spec/actions/split.js'></script>
<script src='spec/actions/straighten_nodes.js'></script>
<script src='spec/actions/straighten_way.js'></script>
<script src='spec/actions/unrestrict_turn.js'></script>
<script src='spec/actions/reflect.js'></script>
<script src='spec/actions/extract.js'></script>
<script src='spec/actions/upgrade_tags.js'></script>
<script src='spec/behavior/hash.js'></script>
<script src='spec/behavior/hover.js'></script>
<script src='spec/behavior/select.js'></script>
<script src='spec/behavior/lasso.js'></script>
<script src='spec/behavior/hash.js'></script>
<script src='spec/behavior/hover.js'></script>
<script src='spec/behavior/select.js'></script>
<script src='spec/behavior/lasso.js'></script>
<script src='spec/core/context.js'></script>
<script src='spec/core/difference.js'></script>
<script src='spec/core/graph.js'></script>
<script src='spec/core/history.js'></script>
<script src='spec/core/tree.js'></script>
<script src='spec/core/validator.js'></script>
<script src='spec/core/context.js'></script>
<script src='spec/core/difference.js'></script>
<script src='spec/core/graph.js'></script>
<script src='spec/core/history.js'></script>
<script src='spec/core/tree.js'></script>
<script src='spec/core/validator.js'></script>
<script src='spec/geo/extent.js'></script>
<script src='spec/geo/geo.js'></script>
<script src='spec/geo/geom.js'></script>
<script src='spec/geo/vector.js'></script>
<script src='spec/geo/extent.js'></script>
<script src='spec/geo/geo.js'></script>
<script src='spec/geo/geom.js'></script>
<script src='spec/geo/vector.js'></script>
<script src='spec/lib/locale.js'></script>
<script src='spec/lib/locale.js'></script>
<script src='spec/modes/add_point.js'></script>
<script src='spec/modes/add_note.js'></script>
<script src='spec/modes/add_point.js'></script>
<script src='spec/modes/add_note.js'></script>
<script src='spec/operations/extract.js'></script>
<script src='spec/operations/straighten.js'></script>
<script src='spec/operations/extract.js'></script>
<script src='spec/operations/straighten.js'></script>
<script src='spec/osm/changeset.js'></script>
<script src='spec/osm/entity.js'></script>
<script src='spec/osm/intersection.js'></script>
<script src='spec/osm/multipolygon.js'></script>
<script src='spec/osm/lanes.js'></script>
<script src='spec/osm/node.js'></script>
<script src='spec/osm/note.js'></script>
<script src='spec/osm/relation.js'></script>
<script src='spec/osm/way.js'></script>
<script src='spec/osm/changeset.js'></script>
<script src='spec/osm/entity.js'></script>
<script src='spec/osm/intersection.js'></script>
<script src='spec/osm/multipolygon.js'></script>
<script src='spec/osm/lanes.js'></script>
<script src='spec/osm/node.js'></script>
<script src='spec/osm/note.js'></script>
<script src='spec/osm/relation.js'></script>
<script src='spec/osm/way.js'></script>
<script src='spec/presets/category.js'></script>
<script src='spec/presets/collection.js'></script>
<script src='spec/presets/index.js'></script>
<script src='spec/presets/preset.js'></script>
<script src='spec/presets/category.js'></script>
<script src='spec/presets/collection.js'></script>
<script src='spec/presets/index.js'></script>
<script src='spec/presets/preset.js'></script>
<script src='spec/renderer/background_source.js'></script>
<script src='spec/renderer/features.js'></script>
<script src='spec/renderer/map.js'></script>
<script src='spec/renderer/tile_layer.js'></script>
<script src='spec/renderer/background_source.js'></script>
<script src='spec/renderer/features.js'></script>
<script src='spec/renderer/map.js'></script>
<script src='spec/renderer/tile_layer.js'></script>
<script src='spec/services/mapillary.js'></script>
<script src='spec/services/maprules.js'></script>
<script src='spec/services/nominatim.js'></script>
<script src='spec/services/openstreetcam.js'></script>
<script src='spec/services/osm.js'></script>
<script src='spec/services/osm_wikibase.js'></script>
<script src='spec/services/streetside.js'></script>
<script src='spec/services/taginfo.js'></script>
<script src='spec/services/mapillary.js'></script>
<script src='spec/services/maprules.js'></script>
<script src='spec/services/nominatim.js'></script>
<script src='spec/services/openstreetcam.js'></script>
<script src='spec/services/osm.js'></script>
<script src='spec/services/osm_wikibase.js'></script>
<script src='spec/services/streetside.js'></script>
<script src='spec/services/taginfo.js'></script>
<script src='spec/svg/areas.js'></script>
<script src='spec/svg/data.js'></script>
<script src='spec/svg/icon.js'></script>
<script src='spec/svg/layers.js'></script>
<script src='spec/svg/lines.js'></script>
<script src='spec/svg/midpoints.js'></script>
<script src='spec/svg/osm.js'></script>
<script src='spec/svg/points.js'></script>
<script src='spec/svg/svg.js'></script>
<script src='spec/svg/tag_classes.js'></script>
<script src='spec/svg/vertices.js'></script>
<script src='spec/svg/areas.js'></script>
<script src='spec/svg/data.js'></script>
<script src='spec/svg/icon.js'></script>
<script src='spec/svg/layers.js'></script>
<script src='spec/svg/lines.js'></script>
<script src='spec/svg/midpoints.js'></script>
<script src='spec/svg/osm.js'></script>
<script src='spec/svg/points.js'></script>
<script src='spec/svg/svg.js'></script>
<script src='spec/svg/tag_classes.js'></script>
<script src='spec/svg/vertices.js'></script>
<script src='spec/ui/cmd.js'></script>
<script src='spec/ui/combobox.js'></script>
<script src='spec/ui/confirm.js'></script>
<script src='spec/ui/flash.js'></script>
<script src='spec/ui/inspector.js'></script>
<script src='spec/ui/modal.js'></script>
<script src='spec/ui/raw_tag_editor.js'></script>
<script src='spec/ui/cmd.js'></script>
<script src='spec/ui/combobox.js'></script>
<script src='spec/ui/confirm.js'></script>
<script src='spec/ui/flash.js'></script>
<script src='spec/ui/inspector.js'></script>
<script src='spec/ui/modal.js'></script>
<script src='spec/ui/raw_tag_editor.js'></script>
<script src='spec/ui/fields/access.js'></script>
<script src='spec/ui/fields/localized.js'></script>
<script src='spec/ui/fields/wikipedia.js'></script>
<script src='spec/ui/fields/access.js'></script>
<script src='spec/ui/fields/localized.js'></script>
<script src='spec/ui/fields/wikipedia.js'></script>
<script src='spec/util/array.js'></script>
<script src='spec/util/clean_tags.js'></script>
<script src='spec/util/keybinding.js'></script>
<script src='spec/util/object.js'></script>
<script src='spec/util/session_mutex.js'></script>
<script src='spec/util/util.js'></script>
<script src='spec/util/array.js'></script>
<script src='spec/util/clean_tags.js'></script>
<script src='spec/util/keybinding.js'></script>
<script src='spec/util/object.js'></script>
<script src='spec/util/session_mutex.js'></script>
<script src='spec/util/util.js'></script>
<script src='spec/validations/almost_junction.js'></script>
<script src='spec/validations/crossing_ways.js'></script>
<script src='spec/validations/disconnected_way.js'></script>
<script src='spec/validations/incompatible_source.js'></script>
<script src='spec/validations/mismatched_geometry.js'></script>
<script src='spec/validations/missing_role.js'></script>
<script src='spec/validations/missing_tag.js'></script>
<script src='spec/validations/outdated_tags.js'></script>
<script src='spec/validations/private_data.js'></script>
<script src='spec/validations/suspicious_name.js'></script>
<script src='spec/validations/almost_junction.js'></script>
<script src='spec/validations/crossing_ways.js'></script>
<script src='spec/validations/disconnected_way.js'></script>
<script src='spec/validations/incompatible_source.js'></script>
<script src='spec/validations/mismatched_geometry.js'></script>
<script src='spec/validations/missing_role.js'></script>
<script src='spec/validations/missing_tag.js'></script>
<script src='spec/validations/outdated_tags.js'></script>
<script src='spec/validations/private_data.js'></script>
<script src='spec/validations/suspicious_name.js'></script>
<script>
window.mocha.run();
</script>
<script>
window.mocha.run();
</script>
</body>
</html>

View File

@@ -2,38 +2,38 @@
<html>
<head>
<meta charset='utf-8'>
<title>Mocha Tests</title>
<link rel='stylesheet' href='../node_modules/mocha/mocha.css'>
<link rel='stylesheet' href='../dist/iD.css'>
<!-- <script src='../node_modules/d3/build/d3.js'></script> -->
<meta charset='utf-8'>
<title>Mocha Tests</title>
<link rel='stylesheet' href='../node_modules/mocha/mocha.css'>
<link rel='stylesheet' href='../dist/iD.css'>
<!-- <script src='../node_modules/d3/build/d3.js'></script> -->
</head>
<body style="overflow:scroll">
<div id='mocha'></div>
<div id='mocha'></div>
<script src='../node_modules/mocha/mocha.js'></script>
<script src='../node_modules/chai/chai.js'></script>
<script src='../node_modules/sinon/pkg/sinon.js'></script>
<script src='../node_modules/sinon-chai/lib/sinon-chai.js'></script>
<script src='../node_modules/happen/happen.js'></script>
<script src='../node_modules/mocha/mocha.js'></script>
<script src='../node_modules/chai/chai.js'></script>
<script src='../node_modules/sinon/pkg/sinon.js'></script>
<script src='../node_modules/sinon-chai/lib/sinon-chai.js'></script>
<script src='../node_modules/happen/happen.js'></script>
<script>
if (typeof initMochaPhantomJS === 'function') {
initMochaPhantomJS()
}
</script>
<script>
if (typeof initMochaPhantomJS === 'function') {
initMochaPhantomJS()
}
</script>
<!-- include source files here... -->
<script src='../dist/iD.js'></script>
<script src='spec/spec_helpers.js'></script>
<!-- include source files here... -->
<script src='../dist/iD.legacy.js'></script>
<script src='spec/spec_helpers.js'></script>
<!-- include spec files below... -->
<script src='spec/phantom.js'></script>
<!-- include spec files below... -->
<script src='spec/phantom.js'></script>
<script>
window.mocha.run();
</script>
<script>
window.mocha.run();
</script>
</body>
</html>