Build: Auto set parsers as external (#8639)

* Auto set parsers as external

* Update bundler.js
This commit is contained in:
fisker Cheung authored and GitHub committed 2020-06-25 00:01:17 +03:00
1 parent 9e8df9d922
commit e8be12a6eb
2 files changed
+36 -50

No files matched your search

+8 -1
View File
@@ -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(),
+28 -49
View File
@@ -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;
},
},
},