1 | import fs from 'fs';
|
2 | import path from 'path';
|
3 | import alias from '@rxts/rollup-plugin-alias';
|
4 | import builtinModules from 'builtin-modules';
|
5 | import debug from 'debug';
|
6 | import { flatMap } from 'lodash';
|
7 | import babel from 'rollup-plugin-babel';
|
8 | import commonjs from 'rollup-plugin-commonjs';
|
9 | import json from 'rollup-plugin-json';
|
10 | import postcss from 'rollup-plugin-postcss';
|
11 | import nodeBuiltins from 'rollup-plugin-node-builtins';
|
12 | import nodeGlobals from 'rollup-plugin-node-globals';
|
13 | import replace from 'rollup-plugin-replace';
|
14 | import nodeResolve from 'rollup-plugin-node-resolve';
|
15 | import { terser } from 'rollup-plugin-terser';
|
16 | import typescript from 'rollup-plugin-typescript';
|
17 | import url from 'rollup-plugin-url';
|
18 | import { getGlobals, upperCamelCase, normalizePkg } from '@pkgr/umd-globals';
|
19 | import { namedExports } from '@pkgr/named-exports';
|
20 |
|
21 | function _slicedToArray(arr, i) {
|
22 | return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
|
23 | }
|
24 |
|
25 | function _arrayWithHoles(arr) {
|
26 | if (Array.isArray(arr)) return arr;
|
27 | }
|
28 |
|
29 | function _iterableToArrayLimit(arr, i) {
|
30 | if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
|
31 | return;
|
32 | }
|
33 |
|
34 | var _arr = [];
|
35 | var _n = true;
|
36 | var _d = false;
|
37 | var _e = undefined;
|
38 |
|
39 | try {
|
40 | for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
|
41 | _arr.push(_s.value);
|
42 |
|
43 | if (i && _arr.length === i) break;
|
44 | }
|
45 | } catch (err) {
|
46 | _d = true;
|
47 | _e = err;
|
48 | } finally {
|
49 | try {
|
50 | if (!_n && _i["return"] != null) _i["return"]();
|
51 | } finally {
|
52 | if (_d) throw _e;
|
53 | }
|
54 | }
|
55 |
|
56 | return _arr;
|
57 | }
|
58 |
|
59 | function _nonIterableRest() {
|
60 | throw new TypeError("Invalid attempt to destructure non-iterable instance");
|
61 | }
|
62 |
|
63 | var info = debug('r:info');
|
64 | var PRODUCTION = 'production';
|
65 | var STYLE_EXTENSIONS = ['.css', '.less', 'sass', '.scss', '.styl', '.stylus'];
|
66 | var IMAGE_EXTENSIONS = ['.gif', '.jpeg', '.jpg', '.png', '.svg', '.webp'];
|
67 | var ASSETS_EXTENSIONS = STYLE_EXTENSIONS.concat(IMAGE_EXTENSIONS);
|
68 |
|
69 | var resolve = function resolve() {
|
70 | var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
71 | deps = _ref.deps,
|
72 | node = _ref.node;
|
73 |
|
74 | return nodeResolve({
|
75 | dedupe: node ? undefined : deps,
|
76 | mainFields: [!node && 'browser', 'esnext', 'es2015', 'esm2015', 'fesm2015', 'esm5', 'fesm5', 'module', 'jsnext:main', 'main'].filter(Boolean)
|
77 | });
|
78 | };
|
79 |
|
80 | var cjs = function cjs(sourceMap) {
|
81 | return commonjs({
|
82 |
|
83 |
|
84 |
|
85 | ignore: ['react-draggable'],
|
86 | namedExports: namedExports,
|
87 | sourceMap: sourceMap
|
88 | });
|
89 | };
|
90 |
|
91 | var BASIC_PLUGINS = [json(), url({
|
92 | include: IMAGE_EXTENSIONS.map(function (ext) {
|
93 | return "**/*".concat(ext);
|
94 | })
|
95 | })];
|
96 | var DEFAULT_FORMATS = ['cjs', 'es2015', 'esm'];
|
97 | var isTsAvailable = false;
|
98 |
|
99 | try {
|
100 | isTsAvailable = !!require.resolve('typescript');
|
101 | } catch (e) {}
|
102 |
|
103 |
|
104 | var EXTENSIONS = Object.keys(require.extensions);
|
105 |
|
106 | if (isTsAvailable) {
|
107 | EXTENSIONS.unshift('.ts', '.tsx');
|
108 | }
|
109 |
|
110 | var tryExtensions = function tryExtensions(filepath) {
|
111 | var ext = EXTENSIONS.find(function (ext) {
|
112 | return fs.existsSync(filepath + ext);
|
113 | });
|
114 | return ext ? filepath + ext : filepath;
|
115 | };
|
116 |
|
117 | var tryRegExp = function tryRegExp(exp) {
|
118 | if (typeof exp !== 'string' || !(exp = exp.trim())) {
|
119 | return exp;
|
120 | }
|
121 |
|
122 | var matched = /^\/(.*)\/([gimsuy]*)$/.exec(exp);
|
123 |
|
124 | if (matched) {
|
125 | try {
|
126 | return new RegExp(matched[1], matched[2]);
|
127 | } catch (_unused) {}
|
128 | }
|
129 |
|
130 | return exp;
|
131 | };
|
132 |
|
133 | var onwarn = function onwarn(warning, warn) {
|
134 | if (warning.code === 'THIS_IS_UNDEFINED') {
|
135 | return;
|
136 | }
|
137 |
|
138 | warn(warning);
|
139 | };
|
140 |
|
141 | var config = function config() {
|
142 | var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
143 | formats = _ref2.formats,
|
144 | monorepo = _ref2.monorepo,
|
145 | input = _ref2.input,
|
146 | _ref2$outputDir = _ref2.outputDir,
|
147 | outputDir = _ref2$outputDir === void 0 ? 'lib' : _ref2$outputDir,
|
148 | exports = _ref2.exports,
|
149 | _ref2$externals = _ref2.externals,
|
150 | externals = _ref2$externals === void 0 ? [] : _ref2$externals,
|
151 | umdGlobals = _ref2.globals,
|
152 | _ref2$aliases = _ref2.aliases,
|
153 | aliases = _ref2$aliases === void 0 ? [] : _ref2$aliases,
|
154 | _ref2$sourceMap = _ref2.sourceMap,
|
155 | sourceMap = _ref2$sourceMap === void 0 ? false : _ref2$sourceMap,
|
156 | postcssOpts = _ref2.postcss,
|
157 | _ref2$prod = _ref2.prod,
|
158 | prod = _ref2$prod === void 0 ? process.env.NODE_ENV === PRODUCTION : _ref2$prod;
|
159 |
|
160 | var pkgsPath = path.resolve(typeof monorepo === 'string' ? monorepo : 'packages');
|
161 |
|
162 | if (monorepo !== false) {
|
163 | monorepo = fs.existsSync(pkgsPath);
|
164 | }
|
165 |
|
166 | var pkgs = monorepo ? fs.readdirSync(pkgsPath) : [''];
|
167 | var globals = getGlobals({
|
168 | globals: umdGlobals
|
169 | });
|
170 | var configs = flatMap(pkgs, function (pkg) {
|
171 | var pkgPath = path.resolve(monorepo ? pkgsPath : '', pkg);
|
172 | var srcPath = path.resolve(pkgPath, 'src');
|
173 | var pkgInput = input;
|
174 | var pkgOutputDir = outputDir;
|
175 |
|
176 | if (!fs.existsSync(srcPath) && pkgInput == null) {
|
177 | pkgInput = 'index';
|
178 | }
|
179 |
|
180 | pkgInput = tryExtensions(path.resolve(pkgPath, pkgInput || 'src/index'));
|
181 | var isAbsolute = path.isAbsolute(pkgInput);
|
182 |
|
183 | if (pkgOutputDir && !pkgOutputDir.endsWith('/')) {
|
184 | pkgOutputDir = pkgOutputDir + '/';
|
185 | }
|
186 |
|
187 | if (!fs.existsSync(pkgInput) || isAbsolute && !pkgInput.startsWith(pkgPath)) {
|
188 | return [];
|
189 | }
|
190 |
|
191 | var _require = require(path.resolve(pkgPath, 'package.json')),
|
192 | name = _require.name,
|
193 | _require$engines = _require.engines;
|
194 |
|
195 | _require$engines = _require$engines === void 0 ? {} : _require$engines;
|
196 | var node = _require$engines.node,
|
197 | _require$dependencies = _require.dependencies,
|
198 | dependencies = _require$dependencies === void 0 ? {} : _require$dependencies,
|
199 | _require$peerDependen = _require.peerDependencies,
|
200 | peerDependencies = _require$peerDependen === void 0 ? {} : _require$peerDependen;
|
201 | var deps = Object.keys(dependencies);
|
202 |
|
203 | var _external = externals.concat(Object.keys(peerDependencies), node ? deps.concat(builtinModules) : []);
|
204 |
|
205 | var isTsInput = /\.tsx?/.test(pkgInput);
|
206 | var pkgFormats = formats && formats.length ? formats : DEFAULT_FORMATS.concat(node ? [] : 'umd');
|
207 |
|
208 | var pkgGlobals = _external.reduce(function (pkgGlobals, pkg) {
|
209 | if (pkgGlobals[pkg] == null) {
|
210 | pkgGlobals[pkg] = upperCamelCase(normalizePkg(pkg));
|
211 | }
|
212 |
|
213 | return pkgGlobals;
|
214 | }, globals);
|
215 |
|
216 | return pkgFormats.map(function (format) {
|
217 | var isEsVersion = /^es(\d+|next)$/.test(format) && format !== 'es5';
|
218 | return {
|
219 | input: pkgInput,
|
220 | output: {
|
221 | file: path.resolve(pkgPath, "".concat(pkgOutputDir).concat(format).concat(prod ? '.min' : '', ".js")),
|
222 | format: isEsVersion ? 'esm' : format,
|
223 | name: pkgGlobals[name] || upperCamelCase(normalizePkg(name)),
|
224 | globals: globals,
|
225 | exports: exports
|
226 | },
|
227 | external: function external(id) {
|
228 | return _external.some(function (pkg) {
|
229 | return id === pkg || id.startsWith(pkg + '/');
|
230 | });
|
231 | },
|
232 | onwarn: onwarn,
|
233 | plugins: [alias({
|
234 | resolve: EXTENSIONS.concat(ASSETS_EXTENSIONS),
|
235 | entries: Array.isArray(aliases) ? aliases.map(function (_ref3) {
|
236 | var find = _ref3.find,
|
237 | replacement = _ref3.replacement;
|
238 | return {
|
239 | find: tryRegExp(find),
|
240 | replacement: replacement
|
241 | };
|
242 | }) : Object.entries(aliases).map(function (_ref4) {
|
243 | var _ref5 = _slicedToArray(_ref4, 2),
|
244 | find = _ref5[0],
|
245 | replacement = _ref5[1];
|
246 |
|
247 | return {
|
248 | find: tryRegExp(find),
|
249 | replacement: replacement
|
250 | };
|
251 | })
|
252 | }), isTsAvailable && isTsInput ? typescript({
|
253 | target: isEsVersion ? format : 'es5'
|
254 | }) : babel({
|
255 | exclude: ['*.min.js', '*.production.js'],
|
256 | presets: [['@babel/preset-env', isEsVersion ? {
|
257 | targets: {
|
258 | esmodules: true
|
259 | }
|
260 | } : undefined]]
|
261 | })].concat(!node && [nodeGlobals(), nodeBuiltins({
|
262 | crypto: true
|
263 | })], resolve({
|
264 | deps: deps,
|
265 | node: !!node
|
266 | }), cjs(sourceMap), BASIC_PLUGINS, postcss(postcssOpts), prod && [replace({
|
267 | 'process.env.NODE_ENV': JSON.stringify(PRODUCTION)
|
268 | }), terser()]).filter(Boolean)
|
269 | };
|
270 | });
|
271 | });
|
272 | console.assert(configs.length, "No configuration resolved, mark sure you've setup correctly");
|
273 | return configs;
|
274 | };
|
275 |
|
276 | var config$1 = (function () {
|
277 | var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
278 | var configs = config(options).concat(options.prod ? config(Object.assign({}, options, {
|
279 | prod: false
|
280 | })) : []);
|
281 | info('configs: %O', configs);
|
282 | return configs;
|
283 | });
|
284 |
|
285 | export default config$1;
|