UNPKG

5.74 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.toUnsafeRollupConfig = toUnsafeRollupConfig;
7exports.getRollupConfig = exports.rollup = void 0;
8
9var _path = _interopRequireDefault(require("path"));
10
11var _builtinModules = _interopRequireDefault(require("builtin-modules"));
12
13var _package = require("../package");
14
15var _entrypoint = require("../entrypoint");
16
17var _rollup2 = require("rollup");
18
19var _errors = require("../errors");
20
21var _messages = require("../messages");
22
23var _rewriteCjsRuntimeHelpers = _interopRequireDefault(require("../rollup-plugins/rewrite-cjs-runtime-helpers"));
24
25var _flowAndProdDevEntry = _interopRequireDefault(require("../rollup-plugins/flow-and-prod-dev-entry"));
26
27var _typescriptDeclarations = _interopRequireDefault(require("../rollup-plugins/typescript-declarations"));
28
29var _rollupPluginJson = _interopRequireDefault(require("rollup-plugin-json"));
30
31var _babel = _interopRequireDefault(require("../rollup-plugins/babel"));
32
33var _terser = _interopRequireDefault(require("../rollup-plugins/terser"));
34
35var _prompt = require("../prompt");
36
37var _utils = require("../utils");
38
39var _constants = require("../constants");
40
41var _installPackages = _interopRequireDefault(require("install-packages"));
42
43function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
44
45const resolve = require("rollup-plugin-node-resolve");
46
47const alias = require("rollup-plugin-alias");
48
49const cjs = require("rollup-plugin-commonjs");
50
51const replace = require("rollup-plugin-replace");
52
53const resolveFrom = require("resolve-from");
54
55const chalk = require("chalk");
56
57// this makes sure nested imports of external packages are external
58const 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
67let rollup = _rollup2.rollup;
68exports.rollup = rollup;
69
70function toUnsafeRollupConfig(config) {
71 return config;
72}
73
74let 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
175exports.getRollupConfig = getRollupConfig;
\No newline at end of file