diff --git a/scripts/build/bundler.js b/scripts/build/bundler.js index 1add657de..03d18b272 100644 --- a/scripts/build/bundler.js +++ b/scripts/build/bundler.js @@ -16,8 +16,12 @@ const nativeShims = require("./rollup-plugins/native-shims"); const executable = require("./rollup-plugins/executable"); const evaluate = require("./rollup-plugins/evaluate"); const externals = require("./rollup-plugins/externals"); +const bundles = require("./config"); const PROJECT_ROOT = path.resolve(__dirname, "../.."); +const plugins = bundles + .filter(({ type }) => type === "plugin") + .map(({ input }) => path.join(PROJECT_ROOT, input)); const EXTERNALS = [ "assert", @@ -175,7 +179,10 @@ function getRollupConfig(bundle) { ignoreGlobal: bundle.target === "node", ...bundle.commonjs, }), - externals(bundle.externals), + externals([ + ...(bundle.externals || []), + ...(bundle.target === "node" ? plugins : []), + ]), bundle.target === "universal" && nodeGlobals(), babel(babelConfig), bundle.minify !== false && bundle.target === "universal" && terser(), diff --git a/src/common/internal-plugins.js b/src/common/internal-plugins.js index be59adc22..7c0cecdf6 100644 --- a/src/common/internal-plugins.js +++ b/src/common/internal-plugins.js @@ -1,9 +1,5 @@ "use strict"; -// We need to use `eval("require")()` to prevent rollup from hoisting the requires. A babel -// plugin will look for `eval("require")()` and transform to `require()` in the bundle, -// and rewrite the paths to require from the top-level. - // We need to list the parsers and getters so we can load them only when necessary. module.exports = [ // JS @@ -12,69 +8,57 @@ module.exports = [ parsers: { // JS - Babel get babel() { - return eval("require")("../language-js/parser-babel").parsers.babel; + return require("../language-js/parser-babel").parsers.babel; }, get "babel-flow"() { - return eval("require")("../language-js/parser-babel").parsers[ - "babel-flow" - ]; + return require("../language-js/parser-babel").parsers["babel-flow"]; }, get "babel-ts"() { - return eval("require")("../language-js/parser-babel").parsers[ - "babel-ts" - ]; + return require("../language-js/parser-babel").parsers["babel-ts"]; }, get json() { - return eval("require")("../language-js/parser-babel").parsers.json; + return require("../language-js/parser-babel").parsers.json; }, get json5() { - return eval("require")("../language-js/parser-babel").parsers.json5; + return require("../language-js/parser-babel").parsers.json5; }, get "json-stringify"() { - return eval("require")("../language-js/parser-babel").parsers[ - "json-stringify" - ]; + return require("../language-js/parser-babel").parsers["json-stringify"]; }, get __js_expression() { - return eval("require")("../language-js/parser-babel").parsers - .__js_expression; + return require("../language-js/parser-babel").parsers.__js_expression; }, get __vue_expression() { - return eval("require")("../language-js/parser-babel").parsers - .__vue_expression; + return require("../language-js/parser-babel").parsers.__vue_expression; }, get __vue_event_binding() { - return eval("require")("../language-js/parser-babel").parsers + return require("../language-js/parser-babel").parsers .__vue_event_binding; }, // JS - Flow get flow() { - return eval("require")("../language-js/parser-flow").parsers.flow; + return require("../language-js/parser-flow").parsers.flow; }, // JS - TypeScript get typescript() { - return eval("require")("../language-js/parser-typescript").parsers - .typescript; + return require("../language-js/parser-typescript").parsers.typescript; }, // JS - Angular Action get __ng_action() { - return eval("require")("../language-js/parser-angular").parsers - .__ng_action; + return require("../language-js/parser-angular").parsers.__ng_action; }, // JS - Angular Binding get __ng_binding() { - return eval("require")("../language-js/parser-angular").parsers - .__ng_binding; + return require("../language-js/parser-angular").parsers.__ng_binding; }, // JS - Angular Interpolation get __ng_interpolation() { - return eval("require")("../language-js/parser-angular").parsers + return require("../language-js/parser-angular").parsers .__ng_interpolation; }, // JS - Angular Directive get __ng_directive() { - return eval("require")("../language-js/parser-angular").parsers - .__ng_directive; + return require("../language-js/parser-angular").parsers.__ng_directive; }, }, }, @@ -85,13 +69,13 @@ module.exports = [ parsers: { // TODO: switch these to just `postcss` and use `language` instead. get css() { - return eval("require")("../language-css/parser-postcss").parsers.css; + return require("../language-css/parser-postcss").parsers.css; }, get less() { - return eval("require")("../language-css/parser-postcss").parsers.less; + return require("../language-css/parser-postcss").parsers.less; }, get scss() { - return eval("require")("../language-css/parser-postcss").parsers.scss; + return require("../language-css/parser-postcss").parsers.scss; }, }, }, @@ -101,8 +85,7 @@ module.exports = [ { parsers: { get glimmer() { - return eval("require")("../language-handlebars/parser-glimmer").parsers - .glimmer; + return require("../language-handlebars/parser-glimmer").parsers.glimmer; }, }, }, @@ -112,8 +95,7 @@ module.exports = [ { parsers: { get graphql() { - return eval("require")("../language-graphql/parser-graphql").parsers - .graphql; + return require("../language-graphql/parser-graphql").parsers.graphql; }, }, }, @@ -123,16 +105,13 @@ module.exports = [ { parsers: { get remark() { - return eval("require")("../language-markdown/parser-markdown").parsers - .remark; + return require("../language-markdown/parser-markdown").parsers.remark; }, get markdown() { - return eval("require")("../language-markdown/parser-markdown").parsers - .remark; + return require("../language-markdown/parser-markdown").parsers.remark; }, get mdx() { - return eval("require")("../language-markdown/parser-markdown").parsers - .mdx; + return require("../language-markdown/parser-markdown").parsers.mdx; }, }, }, @@ -142,19 +121,19 @@ module.exports = [ parsers: { // HTML get html() { - return eval("require")("../language-html/parser-html").parsers.html; + return require("../language-html/parser-html").parsers.html; }, // Vue get vue() { - return eval("require")("../language-html/parser-html").parsers.vue; + return require("../language-html/parser-html").parsers.vue; }, // Angular get angular() { - return eval("require")("../language-html/parser-html").parsers.angular; + return require("../language-html/parser-html").parsers.angular; }, // Lightning Web Components get lwc() { - return eval("require")("../language-html/parser-html").parsers.lwc; + return require("../language-html/parser-html").parsers.lwc; }, }, }, @@ -164,7 +143,7 @@ module.exports = [ { parsers: { get yaml() { - return eval("require")("../language-yaml/parser-yaml").parsers.yaml; + return require("../language-yaml/parser-yaml").parsers.yaml; }, }, },