@serpent/rollup-kits
Version:
serpent rollup kits
55 lines (54 loc) • 2.38 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeCli = void 0;
const tslib_1 = require("tslib");
const fs_1 = tslib_1.__importDefault(require("fs"));
const path_1 = tslib_1.__importDefault(require("path"));
const base_1 = require("./base");
function makeCli(srcKeys = [], options = {}) {
const { plugins } = options, restOptions = tslib_1.__rest(options, ["plugins"]);
const rootDir = base_1.getRootDir();
const srcDir = path_1.default.join(rootDir, 'src');
const binDir = path_1.default.join(srcDir, 'bin');
const pkg = require(path_1.default.join(rootDir, 'package.json'));
const { npm_lifecycle_script: npmLifecycleEvent = '' } = process.env;
const enableSourceMap = npmLifecycleEvent.includes('sourcemap');
const { normalPlugins, minifyPlugins } = base_1.getPlugins(Object.assign({ run: npmLifecycleEvent.includes('watch'), replace: {
__BUILD_VERSION__: pkg.version,
}, typescript: {
module: 'ESNext',
noEmitOnError: false,
sourceMap: enableSourceMap,
}, terser: {
format: { comments: false },
mangle: {},
compress: { drop_console: false },
}, alias: {
entries: fs_1.default.readdirSync(srcDir).map(n => {
return {
find: `src/${n}`,
replacement: path_1.default.join(srcDir, n),
};
}),
} }, plugins));
const keys = srcKeys
.filter(key => {
const dir = path_1.default.join(binDir, key);
return fs_1.default.statSync(dir).isDirectory() && fs_1.default.statSync(path_1.default.join(dir, 'index.ts')).isFile();
})
.map(key => 'cli-' + key);
const config = Object.assign({ input: base_1.getEntryMap(['index', 'cli', ...keys], n => {
if (keys.includes(n)) {
return path_1.default.join(binDir, n.substr(4), 'index.ts');
}
else {
return path_1.default.join(binDir, n + '.ts');
}
}), plugins: enableSourceMap ? minifyPlugins : normalPlugins, external: base_1.getExternal(), output: {
format: 'cjs',
dir: path_1.default.join(rootDir, 'dist'),
exports: 'auto',
} }, restOptions);
return config;
}
exports.makeCli = makeCli;