mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
67 lines
1.8 KiB
JavaScript
67 lines
1.8 KiB
JavaScript
const fs = require('fs-extra');
|
|
const glob = require('fast-glob');
|
|
const path = require('path');
|
|
const less = require('less');
|
|
const csso = require('csso');
|
|
const postcss = require('postcss');
|
|
const postcssrc = require('postcss-load-config');
|
|
|
|
async function compileLess(lessCodes, paths) {
|
|
const outputs = await Promise.all(
|
|
lessCodes.map((source, index) =>
|
|
less.render(source, {
|
|
paths: [path.resolve(__dirname, 'node_modules')],
|
|
filename: paths[index]
|
|
})
|
|
)
|
|
);
|
|
return outputs.map(item => item.css);
|
|
}
|
|
|
|
async function compilePostcss(cssCodes, paths) {
|
|
const postcssConfig = await postcssrc();
|
|
const outputs = await Promise.all(
|
|
cssCodes.map((css, index) =>
|
|
postcss(postcssConfig.plugins).process(css, { from: paths[index] })
|
|
)
|
|
);
|
|
|
|
return outputs.map(item => item.css);
|
|
}
|
|
|
|
async function compileCsso(cssCodes) {
|
|
return cssCodes.map(css => csso.minify(css).css);
|
|
}
|
|
|
|
async function dest(output, paths) {
|
|
await Promise.all(
|
|
output.map((css, index) => fs.writeFile(paths[index].replace('.less', '.css'), css))
|
|
);
|
|
|
|
// icon.less should be replaced by compiled file
|
|
const iconCss = await glob(['./es/icon/*.css', './lib/icon/*.css'], { absolute: true });
|
|
iconCss.forEach(file => {
|
|
fs.copyFileSync(file, file.replace('.css', '.less'));
|
|
});
|
|
}
|
|
|
|
// compile component css
|
|
async function compile() {
|
|
let codes;
|
|
try {
|
|
const paths = await glob(['./es/**/*.less', './lib/**/*.less'], { absolute: true });
|
|
|
|
codes = await Promise.all(paths.map(path => fs.readFile(path, 'utf-8')));
|
|
codes = await compileLess(codes, paths);
|
|
codes = await compilePostcss(codes, paths);
|
|
codes = await compileCsso(codes);
|
|
|
|
await dest(codes, paths);
|
|
} catch (err) {
|
|
console.log(err);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
compile();
|