mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-04-19 08:56:08 +08:00
52 lines
1.6 KiB
TypeScript
52 lines
1.6 KiB
TypeScript
import { build, loadConfigFromFile, mergeConfig, UserConfig } from 'vite';
|
|
import path from 'path';
|
|
import fs from 'fs-extra';
|
|
|
|
const packagesDir = path.resolve(__dirname, '../packages');
|
|
const outputDir = path.resolve(__dirname, '../dist/packages');
|
|
|
|
// 清空 dist 目录
|
|
fs.emptyDirSync(outputDir);
|
|
|
|
// 获取所有包目录
|
|
const packageDirs = fs.readdirSync(packagesDir).filter(name => {
|
|
const packagePath = path.join(packagesDir, name);
|
|
return fs.statSync(packagePath).isDirectory();
|
|
});
|
|
|
|
// 构建每一个包
|
|
async function buildPackages() {
|
|
for (const packageName of packageDirs) {
|
|
const packageDir = path.join(packagesDir, packageName);
|
|
const configFile = path.resolve(__dirname, '../vite.config.ts');
|
|
const config = await loadConfigFromFile(
|
|
{ command: 'build', mode: 'production' },
|
|
configFile
|
|
);
|
|
const resolved = mergeConfig(config?.config ?? {}, {
|
|
build: {
|
|
lib: {
|
|
entry: path.join(packageDir, 'src/index.ts'),
|
|
name: packageName,
|
|
formats: ['es'],
|
|
fileName: format => `${packageName}.${format}.js`
|
|
},
|
|
outDir: path.join(outputDir, packageName),
|
|
sourcemap: true,
|
|
emptyOutDir: true,
|
|
rollupOptions: {
|
|
external: [/node_modules/, /^@motajs\/.*/]
|
|
}
|
|
}
|
|
} satisfies UserConfig);
|
|
|
|
await build(resolved);
|
|
console.log(`✅ Package ${packageName} built successfully.`);
|
|
}
|
|
}
|
|
|
|
buildPackages().catch(e => {
|
|
console.error(e);
|
|
process.exit(1);
|
|
});
|