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.
ant-design-vue/antd-tools/transformLess.js

34 lines
905 B

7 years ago
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: '~' }),
],
}
return less.render(data, lessOpts)
.then((result) => {
const source = result.css
return postcss(postcssConfig.plugins).process(source)
})
.then((r) => {
return r.css
})
}
module.exports = transformLess