趁这次机会升级了Vue-cli的版本,对vue-cli3.x的使用这里就不做介绍了。官网地址vue-cli3
安装 vue-cli
npm install -g @vue/cli
vue create helloapp
module.exports = {projectName:'xxx'}
dev.js
let projectName = process.argv[2];
if (!projectName) {
throw Error('Project name cannot be empty and must match the directory name');
}
let fs = require('fs');
let template = `module.exports = {projectName:"${projectName}"}`;
fs.writeFileSync('./config/project.js', template);
let exec = require('child_process').execSync;
exec('npm run d', {stdio: 'inherit'});
build.js
let projectName = process.argv[2];
if (!projectName) {
throw Error('Project name cannot be empty and must match the directory name');
}
let fs = require('fs');
let template = `module.exports = {projectName:'${projectName}'}`;
fs.writeFileSync('./config/project.js', template);
let exec = require('child_process').execSync;
exec('npm run b', {stdio: 'inherit'});
"scripts": {
"d": "vue-cli-service serve",
"b": "vue-cli-service build",
"dev": "node config/dev.js",
"build": "node config/build.js"
}
const project = require('./project');
const config = {};
const projectName = project.projectName;
config[projectName] = {
entry:`./src/projects/${projectName}/main.js`,
template:`./src/projects/${projectName}/${projectName}.html`,
fileName:`${projectName}.html`
}
5.创建vue.config.js文件
相关的配置在这个文件进行配置
publicPath: publicPath,
outputDir: config.build.assetsRoot + '/' + project.projectName,
assetsDir: process.env.NODE_ENV === "production" ?
config.build.assetsSubDirectory : config.dev.assetsSubDirectory,
indexPath: pageConfig.filename,
lintOnSave: false,
productionSourceMap: false,
configureWebpack: config => {
config.entry = {
app: ['babel-polyfill', pageConfig.entry]
}
},
chainWebpack: config => {
config.output.filename('[name].js');
config.plugin('html').tap(args => {
args[0].template = resolve(pageConfig.template);
args[0].filename = pageConfig.filename;
return args;
});
config.resolve.alias
.set('vue$', "vue/dist/vue.esm.js")
}
使用devServer配置开发调试模式的内容
index: pageConfig.filename,
contentBase: resolve('public'),
historyApiFallback: {
rewrites: [
{from: /^\//, to: path.posix.join(config.dev.assetsPublicPath, pageConfig.filename)},
{from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, pageConfig.filename)}
]
}