cevuel-cli
Version:
Create element-ui project with vue<br/> Help you build a new project faster with configuration and title
48 lines (40 loc) • 1.76 kB
JavaScript
const fs = require('fs');
const chalk = require('chalk');
const { packageList } = require('../const/data-list');
const { getFileName } = require('../util/os-files');
function handleVue(from, to, options) {
const FileName = getFileName(from);
if (options.answers.lib.indexOf('echarts') == -1 && FileName.indexOf('BaseCharts') !== -1) {
return false;
}
if (options.answers.lib.indexOf('mavon-editor') == -1 && FileName.indexOf('Markdown') !== -1) {
return false;
}
if (options.answers.lib.indexOf('vue-quill-editor') == -1 && FileName.indexOf('VueEditor') !== -1) {
return false;
}
if (options.answers.lib.indexOf('vue-i18n') == -1 && FileName.indexOf('I18n') !== -1) {
return false;
}
const ContextMenuJs = fs.readFileSync(from, 'utf8');
let newContextVue = ContextMenuJs;
if (options.answers.style == 'css') {
newContextVue = newContextVue.replace(/<style lang=\".*?\"/isg, '<style lang="css"');
newContextVue = newContextVue.replace(/\.(scss|less)/isg, '.css');
}
newContextVue = newContextVue.replace(/\<\!\-\- title \-\-\>/isg, options.answers.title);
// 全面替换掉没用的组件内容
packageList.forEach((item) => {
if (options.answers.lib.indexOf(item) == -1) {
item = item.replace(/\//g, '\\/').replace(/\@/g, '\\@');
newContextVue = newContextVue.replace(eval(`/\\/\\/ ${item}.*?\\/\\/ end${item}[\\s\\n]*/isg`), '');
newContextVue = newContextVue.replace(eval(`/\\<\\!\\-\\- ${item} \\-\\-\\>.*?\\<\\!\\-\\- end${item} \\-\\-\\>[\\s\\n]*/isg`), '');
}
})
fs.writeFileSync(to, newContextVue, 'utf8');
console.log(chalk.yellow('Copy Successed'));
}
module.exports = {
handleVue
}