UNPKG

@serpent/rollup-kits

Version:
91 lines (90 loc) 4.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getEntryMap = exports.getRootDir = exports.getExternal = exports.getPlugins = exports.customTerser = exports.builtins = exports.terser = exports.typescript = exports.json = exports.commonjs = exports.resolve = void 0; const tslib_1 = require("tslib"); const path_1 = tslib_1.__importDefault(require("path")); const findup_1 = tslib_1.__importDefault(require("mora-scripts/libs/fs/findup")); const rollup_plugin_ts_paths_1 = tslib_1.__importDefault(require("rollup-plugin-ts-paths")); const plugin_replace_1 = tslib_1.__importDefault(require("@rollup/plugin-replace")); const plugin_node_resolve_1 = tslib_1.__importDefault(require("@rollup/plugin-node-resolve")); exports.resolve = plugin_node_resolve_1.default; const plugin_commonjs_1 = tslib_1.__importDefault(require("@rollup/plugin-commonjs")); exports.commonjs = plugin_commonjs_1.default; const plugin_alias_1 = tslib_1.__importDefault(require("@rollup/plugin-alias")); const plugin_inject_1 = tslib_1.__importDefault(require("@rollup/plugin-inject")); const plugin_run_1 = tslib_1.__importDefault(require("@rollup/plugin-run")); const plugin_json_1 = tslib_1.__importDefault(require("@rollup/plugin-json")); exports.json = plugin_json_1.default; const plugin_typescript_1 = tslib_1.__importDefault(require("@rollup/plugin-typescript")); exports.typescript = plugin_typescript_1.default; const rollup_plugin_terser_1 = require("rollup-plugin-terser"); Object.defineProperty(exports, "terser", { enumerable: true, get: function () { return rollup_plugin_terser_1.terser; } }); const builtin_modules_1 = tslib_1.__importDefault(require("builtin-modules")); exports.builtins = builtin_modules_1.default; const strip = require('@rollup/plugin-strip'); const url = require('@rollup/plugin-url'); function customTerser(arg = {}) { return rollup_plugin_terser_1.terser(Object.assign(Object.assign({ ie8: false }, arg), { format: Object.assign({ comments: false }, arg.format), compress: typeof arg.compress === 'object' || arg.compress == null ? Object.assign({ booleans: true, if_return: true, sequences: true, unused: true, conditionals: true, dead_code: true, drop_debugger: true, drop_console: true }, arg.compress) : arg.compress })); } exports.customTerser = customTerser; function getPlugins(options = {}) { const getPlugin = (fn, opts, defaultOpts) => { if (typeof opts === 'boolean') { if (opts === true) return fn(defaultOpts); } else { if (defaultOpts) { return fn(Object.assign(Object.assign({}, defaultOpts), opts)); } return fn(opts); } }; const normal = [ getPlugin(rollup_plugin_ts_paths_1.default, options.tsConfigPaths == null ? false : options.tsConfigPaths), getPlugin(plugin_run_1.default, options.run == null ? false : options.run), getPlugin(plugin_alias_1.default, options.alias == null ? false : options.alias), getPlugin(plugin_inject_1.default, options.inject == null ? false : options.inject), getPlugin(plugin_replace_1.default, options.replace == null ? false : options.replace), getPlugin(strip, options.strip == null ? false : options.strip), getPlugin(url, options.url == null ? false : options.url), getPlugin(plugin_node_resolve_1.default, options.resolve, { preferBuiltins: true }), getPlugin(plugin_commonjs_1.default, options.commonjs), getPlugin(plugin_json_1.default, options.json), getPlugin(plugin_typescript_1.default, options.typescript, { noEmitOnError: false }), ].filter(t => !!t); return { normalPlugins: normal, minifyPlugins: [...normal, customTerser(options.terser)], }; } exports.getPlugins = getPlugins; function getExternal(pkg) { const externals = [...builtin_modules_1.default]; if (pkg) externals.push(...Object.keys(Object.assign(Object.assign({}, pkg.peerDependencies), pkg.dependencies))); let external = (id, parentId, isResolved) => { if (isResolved) return false; return /^((@[\w-]+\/)?([\w-]+))/.test(id) && externals.includes(RegExp.$1); }; return external; } exports.getExternal = getExternal; function getRootDir() { try { return path_1.default.dirname(findup_1.default.pkg()); } catch (e) { throw new Error('定位不到项目根目录'); } } exports.getRootDir = getRootDir; function getEntryMap(names, map) { return names.reduce((res, key) => { res[key] = map(key); return res; }, {}); } exports.getEntryMap = getEntryMap;