开发时和生产时的配置不同,我们需要将两者分开配置
1安装webpack-merge
用于将配置文件进行合并
npm install webpack-merge
2配置(手动指定config)
package.json
"scripts": { "test": "echo "Error: no test specified" && exit 1", "build": "webpack --config ./build/prod.config.js", "dev": "webpack-dev-server --open --config ./build/dev.config.js" },
3代码部署

buildase.config.js
公共配置
const path = require('path')
const webpack = require('webpack')
const htmlWebpackPlugin =require('html-webpack-plugin')
module.exports = {
optimization: {
minimize: false//取消压缩丑化
},
entry : './src/main.js',
output:{
path : path.resolve(__dirname,'../dist'), //路径拼接 //必须是绝对路径
filename:'bundle.js',
//publicPath:'dist/'
},
module: {
rules: [
{
test: /.css$/,
use: ['style-loader', 'css-loader']
},
{
test: /.less$/,
use: [{
loader: "style-loader" // creates style nodes from JS strings
}, {
loader: "css-loader" // translates CSS into CommonJS
}, {
loader: "less-loader" // compiles Less to CSS
}]
},
{
test: /.(png|jpg|gif|jpeg)$/,
use: [
{
loader: 'url-loader',
options: {
//当加载的图片小于limit时 回编译成base-64
limit: 13000,
//[name] 原来图片的名字
//[hash:8] hash值截取8位
//[ext] 扩展名
name:'img/[name].[hash:8].[ext]'
},
}
]
},
{
test: /.js$/,
//排除这连个文件夹
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
//presets: ['@babel/preset-env']
presets: ['es2015']
}
}
}
,
{
test: /.vue$/,
use: ['vue-loader']
},
]
},
resolve:{
alias:{
'vue$':'vue/dist/vue.esm.js'
}
},
plugins:[
new webpack.BannerPlugin('最终版权归coderTTT所有'),
new htmlWebpackPlugin({
template:'index.html'
}),
]
}
buildprod.config.js
生产时配置,需要压缩代码
/** * 生产时依赖 * @type {{plugins: [webpack.BannerPlugin]}} */ // const uglifyjsWebpackPlugin = require('uglifyjs-webpack-plugin') const webpackMerge = require('webpack-merge') const baseConfig = require('./base.config') module.exports = webpackMerge(baseConfig,{ plugins:[ // new uglifyjsWebpackPlugin() ], optimization: { minimize: true //打开压缩丑化 }, }) /*module.exports = { plugins:[ new uglifyjsWebpackPlugin() ] }*/
builddev.config.js
开发时需要配置服务器
/** * 开发时依赖 */ const webpackMerge = require('webpack-merge') const baseConfig = require('./base.config') module.exports = webpackMerge(baseConfig,{ devServer: { contentBase:"./dist", inline:true }, optimization: { minimize: false //取消压缩丑化 }, }) /* module.exports = { devServer: { contentBase:"./dist", inline:true }, } */
使用
生产时:npn run build
开发时:npm run dev