From beb8db62646081a88b8db31fe95d4b37aa28d98f Mon Sep 17 00:00:00 2001 From: Andrew Levine Date: Wed, 26 Oct 2016 09:44:21 -0500 Subject: [PATCH] Use rollup for bundling to speed up startup time (#190) --- .babelrc | 3 ++- .travis.yml | 11 ++++++++++- package.json | 8 +++++--- rollup.config.js | 9 +++++++++ src/parser/index.js | 12 ++++++------ 5 files changed, 32 insertions(+), 11 deletions(-) create mode 100644 rollup.config.js diff --git a/.babelrc b/.babelrc index ff32c99796..74cf459e3a 100644 --- a/.babelrc +++ b/.babelrc @@ -1,7 +1,8 @@ { "presets": [ ["es2015", { - "loose": true + "loose": true, + "modules": false }], "stage-0" ], diff --git a/.travis.yml b/.travis.yml index 78fb6a1ad1..d9f41ffabf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,16 @@ node_js: - "5" - "6" -before_script: 'if [ -n "${BABEL-}" ]; then make bootstrap-babel ; fi' +before_install: + # Rollup doesn't support node < 4.x. Switch to latest for build + - . $HOME/.nvm/nvm.sh + - nvm install stable && nvm use stable + +before_script: + - 'if [ -n "${BABEL-}" ]; then make bootstrap-babel ; fi' + - 'BABEL_ENV=test npm run build' + # Switch back to node version currently being tested prior to test run + - 'nvm use $TRAVIS_NODE_VERSION;' script: - 'if [ -n "${LINT-}" ]; then npm run lint ; fi' diff --git a/package.json b/package.json index eb60f3bbc3..f05c406776 100644 --- a/package.json +++ b/package.json @@ -29,13 +29,16 @@ "flow-bin": "^0.33.0", "lodash": "^4.15.0", "nyc": "^8.1.0", + "rollup": "^0.36.3", + "rollup-plugin-babel": "^2.6.1", + "rollup-plugin-node-resolve": "^2.0.0", "unicode-9.0.0": "~0.7.0" }, "bin": { "babylon": "./bin/babylon.js" }, "scripts": { - "build": "babel src --out-dir lib", + "build": "rollup -c", "coverage": "nyc report --reporter=json && codecov -f coverage/coverage-final.json", "lint": "eslint src bin", "flow": "flow", @@ -43,8 +46,7 @@ "preversion": "npm run test && npm run changelog", "test": "npm run lint && npm run flow && npm run build && npm run test-only", "test-only": "ava test", - "test-ci": "cross-env BABEL_ENV=test npm run build && nyc npm run test-only", - "watch": "babel src --out-dir lib --watch", + "test-ci": "nyc npm run test-only", "changelog": "git log `git describe --tags --abbrev=0`..HEAD --pretty=format:' * %s (%an)' | grep -v 'Merge pull request'" }, "nyc": { diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000000..1cde3faac5 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,9 @@ +import babel from "rollup-plugin-babel"; +import nodeResolve from "rollup-plugin-node-resolve"; + +export default { + entry: "src/index.js", + dest: "lib/index.js", + plugins: [babel(), nodeResolve()], + format: "cjs" +}; diff --git a/src/parser/index.js b/src/parser/index.js index 8b3353bed0..38f0f4eda2 100644 --- a/src/parser/index.js +++ b/src/parser/index.js @@ -30,20 +30,20 @@ export default class Parser extends Tokenizer { this[name] = f(this[name]); } - loadPlugins(plugins: Array): Object { + loadPlugins(pluginList: Array): Object { let pluginMap = {}; - if (plugins.indexOf("flow") >= 0) { + if (pluginList.indexOf("flow") >= 0) { // ensure flow plugin loads last - plugins = plugins.filter((plugin) => plugin !== "flow"); - plugins.push("flow"); + pluginList = pluginList.filter((plugin) => plugin !== "flow"); + pluginList.push("flow"); } - for (let name of plugins) { + for (let name of pluginList) { if (!pluginMap[name]) { pluginMap[name] = true; - let plugin = exports.plugins[name]; + let plugin = plugins[name]; if (plugin) plugin(this); } }