diff --git a/package.json b/package.json index 74b989ab..331ab12e 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,8 @@ "build": "yarn lint && rollup -c && yarn test:build", "build:ci": "rollup -c && yarn test:build", "build:web": "yarn lint && rollup -c rollup.config.web.js && yarn test:build:web", + "build:esm": "yarn lint && rollup -c rollup.config.esm.js && yarn test:build:esm", + "build:esm:ci": "rollup -c rollup.config.esm.js && yarn test:build:esm", "build:web:ci": "rollup -c rollup.config.web.js && yarn test:build:web", "release": "yarn build && yarn build:web", "build:generator": "rollup -c scripts/rollup.config.js", @@ -44,6 +46,7 @@ "test:web": "node ./node_modules/karma/bin/karma start karma.conf.js --auto-watch", "test:build": "cd ./scripts && jest check-build.test.js", "test:build:web": "node ./scripts/proxy-browser-test.js", + "test:build:esm": "node ./scripts/proxy-browser-test.js", "watch:test": "jest --watch", "generate-parser": "node ./dist/generate-custom-parser.js" }, @@ -104,6 +107,7 @@ "rollup-plugin-commonjs": "^9.2.0", "rollup-plugin-node-globals": "^1.4.0", "rollup-plugin-node-resolve": "^2.0.0", + "rollup-plugin-terser": "^6.1.0", "rollup-plugin-uglify": "^6.0.1", "watchify": "^3.11.1" }, diff --git a/rollup.config.esm.js b/rollup.config.esm.js new file mode 100644 index 00000000..3a5a9087 --- /dev/null +++ b/rollup.config.esm.js @@ -0,0 +1,32 @@ +import nodeResolve from 'rollup-plugin-node-resolve'; +import globals from 'rollup-plugin-node-globals'; +import { terser } from 'rollup-plugin-terser'; // eslint-disable-line import/extensions +import babel from 'rollup-plugin-babel'; +import commonjs from 'rollup-plugin-commonjs'; + +export default { + input: 'src/mercury.js', + plugins: [ + babel({ + runtimeHelpers: true, + exclude: './node_modules#<{(|*', + }), + commonjs({ + ignoreGlobal: true, + }), + globals(), + nodeResolve({ + browser: true, + preferBuiltins: false, + }), + terser(), + ], + treeshake: true, + output: { + file: process.env.MERCURY_TEST_BUILD + ? 'dist/mercury_test.esm.js' + : 'dist/mercury.esm.js', + format: 'es', + sourceMap: true, + }, +};