@funny-ui/cli
Version:
41 lines (32 loc) • 1.2 kB
text/typescript
import fse from "fs-extra";
import ora from "ora";
import { compileBundle, compileModule } from "../compiler/compileModule";
import { ES_DIR, LIB_DIR, UMD_DIR } from "../shared/constant";
import logger from "../shared/logger";
const { remove } = fse;
export function removeDir() {
return Promise.all([remove(LIB_DIR), remove(ES_DIR), remove(UMD_DIR)]);
}
export async function runTask(taskName: string, task: () => any) {
const spinner = ora().start(`Compile ${taskName}`);
try {
await task();
spinner.succeed(`Compilation ${taskName} completed!`);
} catch (error: any) {
spinner.fail(`Compilation ${taskName} failed!`);
logger.error(error.toString());
}
}
export async function compile() {
process.env.NODE_ENV = "compile";
// 移除上次打包结果
await removeDir();
// 生成类型文件和高亮文件
// 编译成 es module
process.env.BABEL_MODULE = "module";
await runTask("module", compileModule);
// 根据 es module 入口文件,生成同时包含样式文件的 *.bundle.mjs,
// 再根据它使用vite的build方法编译成commonjs、es、umd格式
process.env.BABEL_MODULE = "";
await runTask("bundle", compileBundle);
}