UNPKG

@serpent/rollup-kits

Version:
57 lines (56 loc) 2.23 kB
"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;