From 509f94993293673a50abc39d706888121b63f242 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Wed, 22 Jan 2020 10:25:32 -0500 Subject: [PATCH] Make separate rollup config files for different builds --- config/rollup.config.dev.js | 46 +++++++++++++++++ .../rollup.config.legacy.js | 5 ++ config/rollup.config.stats.js | 50 +++++++++++++++++++ package.json | 5 +- 4 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 config/rollup.config.dev.js rename rollup.config.legacy.js => config/rollup.config.legacy.js (87%) create mode 100644 config/rollup.config.stats.js diff --git a/config/rollup.config.dev.js b/config/rollup.config.dev.js new file mode 100644 index 000000000..a521ca6cf --- /dev/null +++ b/config/rollup.config.dev.js @@ -0,0 +1,46 @@ +/* eslint-disable no-console */ +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'; + + +// The "dev" build includes all modules in a single bundle - for now +// * Skips transpilation (so it includes ES6 code and must run in a modern browser) +// * Also generates sourcemaps + +export default { + input: './modules/id.js', + onwarn: onWarn, + output: { + file: 'dist/iD.js', + format: 'iife', + sourcemap: true, + 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: '' }) + ] +}; + +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); +} diff --git a/rollup.config.legacy.js b/config/rollup.config.legacy.js similarity index 87% rename from rollup.config.legacy.js rename to config/rollup.config.legacy.js index e4edbed7d..4e875db9e 100644 --- a/rollup.config.legacy.js +++ b/config/rollup.config.legacy.js @@ -5,6 +5,11 @@ import includePaths from 'rollup-plugin-includepaths'; import json from '@rollup/plugin-json'; import nodeResolve from '@rollup/plugin-node-resolve'; + +// The "legacy" build includes all modules in a single bundle: +// * Runs `buble` to transpile ES6 -> ES5 (needed for IE11 and PhantomJS) +// * No sourcemaps + export default { input: './modules/id.js', onwarn: onWarn, diff --git a/config/rollup.config.stats.js b/config/rollup.config.stats.js new file mode 100644 index 000000000..cd7138158 --- /dev/null +++ b/config/rollup.config.stats.js @@ -0,0 +1,50 @@ +/* eslint-disable no-console */ +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'; +import visualizer from 'rollup-plugin-visualizer'; + + +// The "stats" build is just like the "dev" build, +// but it includes the visualizer plugin to generate a statistics page (slow) + +export default { + input: './modules/id.js', + onwarn: onWarn, + output: { + file: 'dist/iD.js', + format: 'iife', + sourcemap: true, + 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: '' }), + visualizer({ + filename: 'docs/statistics.html', + sourcemap: true + }) + ] +}; + +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); +} diff --git a/package.json b/package.json index 1e4cf665f..e6accbed0 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,10 @@ "scripts": { "all": "npm-run-all -s clean build build:legacy dist", "build": "node --max-old-space-size=4096 build.js", - "build:legacy": "rollup --config rollup.config.legacy.js", + "build:all": "npm-run-all -s build:development", + "build:dev": "rollup --config config/rollup.config.dev.js", + "build:legacy": "rollup --config config/rollup.config.legacy.js", + "build:stats": "rollup --config config/rollup.config.stats.js", "clean": "shx rm -f dist/*.js dist/*.map dist/*.css dist/img/*.svg", "dist": "npm-run-all -p dist:**", "dist:mapillary": "shx mkdir -p dist/mapillary-js && shx cp -R node_modules/mapillary-js/dist/* dist/mapillary-js/",