vite-bolt/plugin/build/autocss.ts

50 lines
1.3 KiB
TypeScript
Raw Normal View History

2023-02-01 17:52:53 +08:00
/**
* css rollup index.js
* e.g Buttom/index.js
* before import './index.less'
* after import './index.css'
*/
import cpy from "cpy";
import { resolve, dirname } from "path";
import { promises as fs } from "fs";
import less from "less";
import glob from "fast-glob";
const rootPath = process.cwd();
const sourceDir = resolve(rootPath, "src");
//lib文件目录
const targetLib = resolve(rootPath, "dist/ui");
//src目录
const srcDir = resolve(rootPath, "src");
const buildLess = async () => {
//直接将less文件复制到打包后目录
await cpy([`${sourceDir}/**/*.less`], targetLib);
//获取打包后.less文件目录(lib和es一样)
const lessFiles = await glob("**/*.less", { cwd: srcDir, onlyFiles: true });
//遍历含有less的目录
for (let path in lessFiles) {
const filePath = `${srcDir}/${lessFiles[path]}`;
//获取less文件字符串
const lessCode = await fs.readFile(filePath, "utf-8");
//将less解析成css
const code = await less.render(lessCode, {
//指定src下对应less文件的文件夹为目录
paths: [srcDir, dirname(filePath)],
});
//拿到.css后缀path
const cssPath = lessFiles[path].replace(".less", ".css");
//将css写入对应目录
await fs.writeFile(resolve(targetLib, cssPath), code.css);
}
};
buildLess();