| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #!/usr/bin/env node
- /**
- * 这个方法用来处理 css-modlue
- * 由于没有开源插件,所以自己撸了一个
- */
- const fs = require('fs');
- const path = require('path');
- const getLocalIdentName = require('./getLocalIdentName');
- const AddlocalIdentName = require('./AddlocalIdentName');
- const replacedefaultLess = require('./replacedefaultLess');
- // read less file list
- const lessArray = ['@import "../node_modules/antd/lib/style/themes/default.less";'];
- const loopAllLess = parents => {
- const paths = fs.readdirSync(parents);
- const promiseList = [];
- paths.forEach(itemPath => {
- if (itemPath === 'style' || itemPath === 'demo') {
- return;
- }
- // file status
- const fileStatus = fs.lstatSync(path.join(parents, itemPath));
- // is file
- // is Directory
- if (fileStatus.isDirectory()) {
- return loopAllLess(path.join(parents, itemPath));
- }
- // is less file
- if (itemPath.indexOf('.less') > -1) {
- const relaPath = path.join(parents, itemPath);
- // post css add localIdentNameplugin
- const fileContent = replacedefaultLess(relaPath);
- // push less file
- promiseList.push(
- AddlocalIdentName(relaPath, fileContent, getLocalIdentName(relaPath)).then(result => {
- lessArray.push(result);
- })
- );
- }
- });
- return Promise.all(promiseList);
- };
- class mergeLessPlugin {
- constructor(options) {
- const defaulOptions = {
- stylesDir: path.join(__dirname, './src/'),
- outFile: path.join(__dirname, './tmp/ant.design.pro.less'),
- };
- this.options = Object.assign(defaulOptions, options);
- this.generated = false;
- }
- apply(compiler) {
- const { options } = this;
- compiler.plugin('emit', (compilation, callback) => {
- const { outFile } = options;
- // covert less
- if (fs.existsSync(outFile)) {
- fs.unlinkSync(outFile);
- } else if (!fs.existsSync(path.dirname(outFile))) {
- fs.mkdirSync(path.dirname(outFile));
- }
- loopAllLess(options.stylesDir).then(() => {
- fs.writeFileSync(outFile, lessArray.join('\n'));
- callback();
- });
- });
- }
- }
- module.exports = mergeLessPlugin;
|