/** * 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();