@serpent/rollup-kits
Version:
serpent rollup kits
91 lines (90 loc) • 4.7 kB
JavaScript
"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;