1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.toUnsafeRollupConfig = toUnsafeRollupConfig;
|
7 | exports.getRollupConfig = exports.rollup = void 0;
|
8 |
|
9 | var _path = _interopRequireDefault(require("path"));
|
10 |
|
11 | var _builtinModules = _interopRequireDefault(require("builtin-modules"));
|
12 |
|
13 | var _package = require("../package");
|
14 |
|
15 | var _entrypoint = require("../entrypoint");
|
16 |
|
17 | var _rollup2 = require("rollup");
|
18 |
|
19 | var _errors = require("../errors");
|
20 |
|
21 | var _messages = require("../messages");
|
22 |
|
23 | var _rewriteCjsRuntimeHelpers = _interopRequireDefault(require("../rollup-plugins/rewrite-cjs-runtime-helpers"));
|
24 |
|
25 | var _flowAndProdDevEntry = _interopRequireDefault(require("../rollup-plugins/flow-and-prod-dev-entry"));
|
26 |
|
27 | var _typescriptDeclarations = _interopRequireDefault(require("../rollup-plugins/typescript-declarations"));
|
28 |
|
29 | var _rollupPluginJson = _interopRequireDefault(require("rollup-plugin-json"));
|
30 |
|
31 | var _babel = _interopRequireDefault(require("../rollup-plugins/babel"));
|
32 |
|
33 | var _terser = _interopRequireDefault(require("../rollup-plugins/terser"));
|
34 |
|
35 | var _prompt = require("../prompt");
|
36 |
|
37 | var _utils = require("../utils");
|
38 |
|
39 | var _constants = require("../constants");
|
40 |
|
41 | var _installPackages = _interopRequireDefault(require("install-packages"));
|
42 |
|
43 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
44 |
|
45 | const resolve = require("rollup-plugin-node-resolve");
|
46 |
|
47 | const alias = require("rollup-plugin-alias");
|
48 |
|
49 | const cjs = require("rollup-plugin-commonjs");
|
50 |
|
51 | const replace = require("rollup-plugin-replace");
|
52 |
|
53 | const resolveFrom = require("resolve-from");
|
54 |
|
55 | const chalk = require("chalk");
|
56 |
|
57 |
|
58 | const makeExternalPredicate = externalArr => {
|
59 | if (externalArr.length === 0) {
|
60 | return () => false;
|
61 | }
|
62 |
|
63 | const pattern = new RegExp(`^(${externalArr.join("|")})($|/)`);
|
64 | return id => pattern.test(id);
|
65 | };
|
66 |
|
67 | let rollup = _rollup2.rollup;
|
68 | exports.rollup = rollup;
|
69 |
|
70 | function toUnsafeRollupConfig(config) {
|
71 | return config;
|
72 | }
|
73 |
|
74 | let getRollupConfig = (pkg, entrypoints, aliases, type) => {
|
75 | let external = [];
|
76 |
|
77 | if (pkg.peerDependencies) {
|
78 | external.push(...Object.keys(pkg.peerDependencies));
|
79 | }
|
80 |
|
81 | if (pkg.dependencies && type !== "umd") {
|
82 | external.push(...Object.keys(pkg.dependencies));
|
83 | }
|
84 |
|
85 | if (type === "node-dev" || type === "node-prod") {
|
86 | external.push(..._builtinModules.default);
|
87 | }
|
88 |
|
89 | let rollupAliases = {};
|
90 | Object.keys(aliases).forEach(key => {
|
91 | try {
|
92 | rollupAliases[key] = resolveFrom(pkg.directory, aliases[key]);
|
93 | } catch (err) {
|
94 | if (err.code !== "MODULE_NOT_FOUND") {
|
95 | throw err;
|
96 | }
|
97 | }
|
98 | });
|
99 | let input = {};
|
100 | entrypoints.forEach(entrypoint => {
|
101 | input[_path.default.relative(pkg.directory, _path.default.join(entrypoint.directory, "dist", (0, _utils.getNameForDist)(pkg.name)))] = entrypoint.strict().source;
|
102 | });
|
103 | const config = {
|
104 | input,
|
105 | external: makeExternalPredicate(external),
|
106 | onwarn: warning => {
|
107 | switch (warning.code) {
|
108 | case "UNUSED_EXTERNAL_IMPORT":
|
109 | {
|
110 | break;
|
111 | }
|
112 |
|
113 | case "UNRESOLVED_IMPORT":
|
114 | {
|
115 | if (/^@babel\/runtime\/helpers\//.test(warning.source)) {
|
116 | throw (async () => {
|
117 | let shouldInstallBabelRuntime = await _messages.confirms.shouldInstallBabelRuntime(pkg);
|
118 |
|
119 | if (shouldInstallBabelRuntime) {
|
120 | await (0, _prompt.limit)(() => (0, _installPackages.default)({
|
121 | packages: ["@babel/runtime"],
|
122 | cwd: pkg.directory,
|
123 | installPeers: false,
|
124 | packageManager: pkg.project.isBolt ? "bolt" : undefined
|
125 | }));
|
126 | await pkg.refresh();
|
127 | } else {
|
128 | throw new _errors.FatalError(`@babel/runtime should be in dependencies of ${pkg.name}`, pkg.name);
|
129 | }
|
130 | })();
|
131 | }
|
132 |
|
133 | if (!warning.source.startsWith(".")) {
|
134 | throw new _errors.FatalError(`"${warning.source}" is imported by "${_path.default.relative(pkg.directory, warning.importer)}" but it is not specified in dependencies or peerDependencies`, pkg.name);
|
135 | }
|
136 | }
|
137 |
|
138 | default:
|
139 | {
|
140 | throw new _errors.FatalError(`There was an error compiling ${pkg.name}: ${chalk.red(warning.toString())}`, pkg.name);
|
141 | }
|
142 | }
|
143 | },
|
144 | plugins: [type === "node-prod" && (0, _flowAndProdDevEntry.default)(pkg), type === "node-prod" && (0, _typescriptDeclarations.default)(pkg), (0, _babel.default)({
|
145 | cwd: pkg.project.directory,
|
146 | plugins: [[require.resolve("@babel/plugin-transform-runtime"), {
|
147 | useESModules: true
|
148 | }]],
|
149 | extensions: _constants.EXTENSIONS
|
150 | }), type === "umd" && cjs({
|
151 | include: ["**/node_modules/**", "node_modules/**"]
|
152 | }), (type === "browser" || type === "umd") && replace({
|
153 | "typeof document": JSON.stringify("object"),
|
154 | "typeof window": JSON.stringify("object")
|
155 | }), (0, _rewriteCjsRuntimeHelpers.default)(), (0, _rollupPluginJson.default)({
|
156 | namedExports: false
|
157 | }), type === "umd" && alias(rollupAliases), resolve({
|
158 | extensions: _constants.EXTENSIONS,
|
159 | customResolveOptions: {
|
160 | moduleDirectory: type === "umd" ? "node_modules" : []
|
161 | }
|
162 | }), (type === "umd" || type === "node-prod") && replace({
|
163 | "process.env.NODE_ENV": '"production"'
|
164 | }), type === "umd" && (0, _terser.default)(), type === "node-prod" && (0, _terser.default)({
|
165 | mangle: false,
|
166 | output: {
|
167 | beautify: true,
|
168 | indent_level: 2
|
169 | }
|
170 | })].filter(Boolean)
|
171 | };
|
172 | return config;
|
173 | };
|
174 |
|
175 | exports.getRollupConfig = getRollupConfig; |
\ | No newline at end of file |