UNPKG

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