UNPKG

9.13 kBJavaScriptView Raw
1import fs from 'fs';
2import path from 'path';
3import alias from '@rxts/rollup-plugin-alias';
4import builtinModules from 'builtin-modules';
5import debug from 'debug';
6import { flatMap } from 'lodash';
7import babel from 'rollup-plugin-babel';
8import commonjs from 'rollup-plugin-commonjs';
9import json from 'rollup-plugin-json';
10import postcss from 'rollup-plugin-postcss';
11import nodeBuiltins from 'rollup-plugin-node-builtins';
12import nodeGlobals from 'rollup-plugin-node-globals';
13import replace from 'rollup-plugin-replace';
14import nodeResolve from 'rollup-plugin-node-resolve';
15import { terser } from 'rollup-plugin-terser';
16import typescript from 'rollup-plugin-typescript';
17import url from 'rollup-plugin-url';
18import { getGlobals, upperCamelCase, normalizePkg } from '@pkgr/umd-globals';
19import { namedExports } from '@pkgr/named-exports';
20
21function _slicedToArray(arr, i) {
22 return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
23}
24
25function _arrayWithHoles(arr) {
26 if (Array.isArray(arr)) return arr;
27}
28
29function _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
59function _nonIterableRest() {
60 throw new TypeError("Invalid attempt to destructure non-iterable instance");
61}
62
63var info = debug('r:info');
64var PRODUCTION = 'production';
65var STYLE_EXTENSIONS = ['.css', '.less', 'sass', '.scss', '.styl', '.stylus'];
66var IMAGE_EXTENSIONS = ['.gif', '.jpeg', '.jpg', '.png', '.svg', '.webp'];
67var ASSETS_EXTENSIONS = STYLE_EXTENSIONS.concat(IMAGE_EXTENSIONS);
68
69var 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
80var cjs = function cjs(sourceMap) {
81 return commonjs({
82 // TODO: add package @pkgr/cjs-ignore ?
83 // see also: https://github.com/rollup/rollup-plugin-commonjs/issues/244#issuecomment-536168280
84 // hard-coded temporarily
85 ignore: ['react-draggable'],
86 namedExports: namedExports,
87 sourceMap: sourceMap
88 });
89};
90
91var BASIC_PLUGINS = [json(), url({
92 include: IMAGE_EXTENSIONS.map(function (ext) {
93 return "**/*".concat(ext);
94 })
95})];
96var DEFAULT_FORMATS = ['cjs', 'es2015', 'esm'];
97var isTsAvailable = false;
98
99try {
100 isTsAvailable = !!require.resolve('typescript');
101} catch (e) {} // eslint-disable-next-line node/no-deprecated-api
102
103
104var EXTENSIONS = Object.keys(require.extensions);
105
106if (isTsAvailable) {
107 EXTENSIONS.unshift('.ts', '.tsx');
108}
109
110var 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
117var 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
133var onwarn = function onwarn(warning, warn) {
134 if (warning.code === 'THIS_IS_UNDEFINED') {
135 return;
136 }
137
138 warn(warning);
139};
140
141var 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
276var 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
285export default config$1;