github网站:vue-cli
官方文档:vue-cli
在一般项目中我们针对不同的开发环境会配置不同的环境变量:
1.在项目根目录下新建三个文件:.env.development
,.env.production
,.env.release
//.env.development
NODE_ENV=development
VUE_APP_XXX=XXX
...
//.env.production
NODE_ENV=production
VUE_APP_XXX=XXX
outputDir=dist
//.env.release
NODE_ENV=production
VUE_APP_XXX=XXX
outputDir=release
2.vue.config.js
配置
module.exports={
...
outputDir: process.env.outputDir,
...
}
3.package.json
配置
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"release": "vue-cli-service build --mode release",
"lint": "vue-cli-service lint"
},
4.打包命令
npm run build
npm run release
打包好的文件分别放在dist
/release
中
修改vue.config.js
const path = require('path')
function resolve (dir) {
return path.join(__dirname, dir)
}
module.exports={
...
// 将接收ChainableConfig由webpack-chain提供支持的实例的函数。
chainWebpack: config => {
config.resolve.alias
.set('@', resolve('src'))
.set('assets',resolve('src/assets'))
.set('components',resolve('src/components'))
},
...
}
修改vue.config.js
module.exports={
...
// 代理相关配置
devServer: {
host: '0.0.0.0',
port: 8080,
https: false,
hotOnly: false,
proxy: null, // string | Object
},
...
}
1.安装插件
npm install --save-dev uglifyjs-webpack-plugin compression-webpack-plugin
2.vue.config.js
配置
//去console插件
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
//gzip压缩插件
const CompressionWebpackPlugin = require('compression-webpack-plugin')
module.exports={
...
// webpack插件配置
configureWebpack: config => {
let plugins = [
new UglifyJsPlugin({
uglifyOptions: {
compress: {
warnings: false,
drop_debugger: true,
drop_console: true,
},
},
sourceMap: false,
parallel: true,
}),
new CompressionWebpackPlugin({
filename: '[path].gz[query]',
algorithm: 'gzip',
test: new RegExp(
'\\.(' +
['js', 'css'].join('|') +
')$',
),
threshold: 10240,
minRatio: 0.8,
}),
]
if (process.env.NODE_ENV !== 'development') {
config.plugins = [...config.plugins, ...plugins]
}
},
...
}
可直接拷贝到自己项目中自定义修改
module.exports = {
// 基本路径
publicPath: '/',
// 输出文件目录
outputDir: 'dist',
// 用于嵌套生成的静态资产(js,css,img,fonts)的目录。
//assetsDir: '',
// 以多页模式构建应用程序。
pages: undefined,
// eslint-loader 是否在保存的时候检查
lintOnSave: true,
// 是否使用包含运行时编译器的Vue核心的构建。
runtimeCompiler: false,
// 默认情况下babel-loader忽略其中的所有文件node_modules。
transpileDependencies: [],
// 生产环境sourceMap
productionSourceMap: true,
// webpack配置
configureWebpack: () => {},
chainWebpack: () => {},
// css相关配置
css: {
// 启用 CSS modules
modules: false,
// 开启 CSS source maps?
sourceMap: false,
// css预设器配置项
loaderOptions: {},
},
// webpack-dev-server 相关配置
devServer: {
host: '0.0.0.0',
port: 8080,
https: false,
hotOnly: false,
proxy: null, // 设置代理
before: app => {}
},
// enabled by default if the machine has more than 1 cores
parallel: require('os').cpus().length > 1,
// PWA 插件相关配置
pwa: {},
// 第三方插件配置
pluginOptions: {
// ...
}
}
可以将json文件放在项目根目录或public文件夹下
vue.config.js
中配置如下
const appData = require('./public/data.json')
const seller = appData.seller
const goods = appData.goods
const ratings = appData.ratings
devServer: {
open: true, // 打开浏览器
host: '0.0.0.0',
port: 8080,
https: false,
hotOnly: false,
proxy: null, // 设置代理
before: app => {
app.get('/api/seller', (req, res) => {
res.json({
status: 1,
data: seller
})
})
app.get('/api/goods', (req, res) => {
res.json({
status: 1,
data: goods
})
})
app.get('/api/ratings', (req, res) => {
res.json({
status: 1,
data: ratings
})
})
}
},
未完待续…