mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-06-08 08:18:00 +08:00
66 lines
2.1 KiB
TypeScript
66 lines
2.1 KiB
TypeScript
import { build, loadConfigFromFile, mergeConfig, UserConfig } from 'vite';
|
|
import path from 'path';
|
|
import fs from 'fs-extra';
|
|
import dts from 'vite-plugin-dts';
|
|
|
|
const packages = path.resolve(process.cwd(), './packages');
|
|
|
|
// 获取所有包目录
|
|
const packageDirs = ['render'];
|
|
|
|
// 构建每一个包
|
|
async function buildPackages() {
|
|
for (const packageName of packageDirs) {
|
|
const packageDir = path.join(packages, packageName);
|
|
const output = path.join(packageDir, 'dist');
|
|
await fs.emptyDir(output);
|
|
const configFile = path.resolve('./vite.config.ts');
|
|
const config = await loadConfigFromFile(
|
|
{ command: 'build', mode: 'production' },
|
|
configFile
|
|
);
|
|
const resolved = mergeConfig(config?.config ?? {}, {
|
|
plugins: [
|
|
dts({
|
|
entryRoot: path.join(packageDir, 'src/index.ts'),
|
|
rollupTypes: true,
|
|
strictOutput: false,
|
|
copyDtsFiles: false,
|
|
exclude: ['packages-user/**/*']
|
|
})
|
|
],
|
|
build: {
|
|
lib: {
|
|
entry: path.join(packageDir, 'src/index.ts'),
|
|
name: packageName,
|
|
formats: ['es', 'cjs'],
|
|
fileName: format => `${packageName}.${format}.js`
|
|
},
|
|
outDir: output,
|
|
sourcemap: true,
|
|
emptyOutDir: true
|
|
},
|
|
publicDir: false
|
|
} satisfies UserConfig);
|
|
|
|
await build(resolved);
|
|
console.log(`✅ Package ${packageName} built successfully.`);
|
|
}
|
|
const dirs = await fs.readdir(packages);
|
|
for (const name of dirs) {
|
|
const dir = path.join(process.cwd(), name);
|
|
if (name === 'types') {
|
|
await fs.emptyDir(path.join(dir, 'src'));
|
|
await fs.rmdir(path.join(dir, 'src'));
|
|
} else {
|
|
await fs.emptyDir(dir);
|
|
await fs.rmdir(dir);
|
|
}
|
|
}
|
|
}
|
|
|
|
buildPackages().catch(e => {
|
|
console.error(e);
|
|
process.exit(1);
|
|
});
|