@serpent/rollup-kits
Version:
serpent rollup kits
57 lines (56 loc) • 2.23 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeLib = void 0;
const tslib_1 = require("tslib");
const fs_1 = tslib_1.__importDefault(require("fs"));
const path_1 = tslib_1.__importDefault(require("path"));
const exists_1 = tslib_1.__importDefault(require("mora-scripts/libs/fs/exists"));
const base_1 = require("./base");
function makeLib(options = {}) {
const { modules } = options, rest = tslib_1.__rest(options, ["modules"]);
const rootDir = base_1.getRootDir();
const srcDir = path_1.default.join(rootDir, 'src');
const pkg = require(path_1.default.join(rootDir, 'package.json'));
let input = modules ||
fs_1.default.readdirSync(srcDir).reduce((res, k) => {
if (k.endsWith('.ts')) {
res[k.replace(/\.ts$/, '')] = path_1.default.join(srcDir, k);
}
else if (exists_1.default(path_1.default.join(srcDir, k, 'index.ts'))) {
res[k] = path_1.default.join(srcDir, k, 'index.ts');
}
return res;
}, {});
const file = (...parts) => path_1.default.join(rootDir, ...parts);
const { normalPlugins } = base_1.getPlugins({
typescript: {
declaration: true,
emitDeclarationOnly: true,
module: 'ESNext',
outDir: file('lib', '__es_types_only__'),
},
});
const config = Object.assign({ input, plugins: [
...normalPlugins,
// 生成 .d.ts 入口文件
{
name: 'generate-d.ts',
renderStart(output, input) {
const keys = Object.keys(input.input);
keys.forEach(key => {
this.emitFile({
type: 'asset',
fileName: key + '.d.ts',
source: `export * from "./__es_types_only__/${key}";\n`,
});
});
},
},
], external: base_1.getExternal(pkg), output: {
format: 'es',
dir: file('lib'),
entryFileNames: '[name].js',
} }, rest);
return config;
}
exports.makeLib = makeLib;