vuecssuiant-designantdreactantantd-vueenterprisefrontendui-designvue-antdvue-antd-uivue3vuecomponent
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
958 B
33 lines
958 B
const less = require('less'); |
|
const { readFileSync } = require('fs'); |
|
const path = require('path'); |
|
const postcss = require('postcss'); |
|
const NpmImportPlugin = require('less-plugin-npm-import'); |
|
const postcssConfig = require('./postcssConfig'); |
|
|
|
function transformLess(lessFile, config = {}) { |
|
const { cwd = process.cwd() } = config; |
|
const resolvedLessFile = path.resolve(cwd, lessFile); |
|
|
|
let data = readFileSync(resolvedLessFile, 'utf-8'); |
|
data = data.replace(/^\uFEFF/, ''); |
|
|
|
// Do less compile |
|
const lessOpts = { |
|
paths: [path.dirname(resolvedLessFile)], |
|
filename: resolvedLessFile, |
|
plugins: [new NpmImportPlugin({ prefix: '~' })], |
|
javascriptEnabled: true, |
|
}; |
|
return less |
|
.render(data, lessOpts) |
|
.then(result => { |
|
const source = result.css; |
|
return postcss(postcssConfig.plugins).process(source, { from: undefined }); |
|
}) |
|
.then(r => { |
|
return r.css; |
|
}); |
|
} |
|
|
|
module.exports = transformLess;
|
|
|