summaryrefslogtreecommitdiff
path: root/history/rollup.config.js
diff options
context:
space:
mode:
Diffstat (limited to 'history/rollup.config.js')
-rw-r--r--history/rollup.config.js104
1 files changed, 104 insertions, 0 deletions
diff --git a/history/rollup.config.js b/history/rollup.config.js
new file mode 100644
index 0000000..575cbdc
--- /dev/null
+++ b/history/rollup.config.js
@@ -0,0 +1,104 @@
+import babel from 'rollup-plugin-babel';
+import nodeResolve from 'rollup-plugin-node-resolve';
+import commonjs from 'rollup-plugin-commonjs';
+import replace from 'rollup-plugin-replace';
+import { sizeSnapshot } from 'rollup-plugin-size-snapshot';
+import { uglify } from 'rollup-plugin-uglify';
+
+import pkg from './package.json';
+
+const input = './modules/index.js';
+const globalName = 'History';
+
+function external(id) {
+ return !id.startsWith('.') && !id.startsWith('/');
+}
+
+const cjs = [
+ {
+ input,
+ output: { file: `cjs/${pkg.name}.js`, format: 'cjs' },
+ external,
+ plugins: [
+ babel({ exclude: /node_modules/ }),
+ replace({ 'process.env.NODE_ENV': JSON.stringify('development') })
+ ]
+ },
+ {
+ input,
+ output: { file: `cjs/${pkg.name}.min.js`, format: 'cjs' },
+ external,
+ plugins: [
+ babel({ exclude: /node_modules/ }),
+ replace({ 'process.env.NODE_ENV': JSON.stringify('production') }),
+ uglify()
+ ]
+ }
+];
+
+const esm = [
+ {
+ input,
+ output: { file: `esm/${pkg.name}.js`, format: 'esm' },
+ external,
+ plugins: [
+ babel({
+ exclude: /node_modules/,
+ runtimeHelpers: true,
+ plugins: [['@babel/transform-runtime', { useESModules: true }]]
+ }),
+ sizeSnapshot()
+ ]
+ }
+];
+
+const umd = [
+ {
+ input,
+ output: { file: `umd/${pkg.name}.js`, format: 'umd', name: globalName },
+ plugins: [
+ babel({
+ exclude: /node_modules/,
+ runtimeHelpers: true,
+ plugins: [['@babel/transform-runtime', { useESModules: true }]]
+ }),
+ nodeResolve(),
+ commonjs({ include: /node_modules/ }),
+ replace({ 'process.env.NODE_ENV': JSON.stringify('development') }),
+ sizeSnapshot()
+ ]
+ },
+ {
+ input,
+ output: { file: `umd/${pkg.name}.min.js`, format: 'umd', name: globalName },
+ plugins: [
+ babel({
+ exclude: /node_modules/,
+ runtimeHelpers: true,
+ plugins: [['@babel/transform-runtime', { useESModules: true }]]
+ }),
+ nodeResolve(),
+ commonjs({ include: /node_modules/ }),
+ replace({ 'process.env.NODE_ENV': JSON.stringify('production') }),
+ sizeSnapshot(),
+ uglify()
+ ]
+ }
+];
+
+let config;
+switch (process.env.BUILD_ENV) {
+ case 'cjs':
+ config = cjs;
+ break;
+ case 'esm':
+ config = esm;
+ break;
+ case 'umd':
+ config = umd;
+ break;
+ default:
+ config = cjs.concat(esm).concat(umd);
+}
+
+export default config;