以下為項(xiàng)目需求:
1.不同命令打包不同環(huán)境包
2.不同環(huán)境的包統(tǒng)一放到dist目錄下筛璧,并做區(qū)分
以下為詳細(xì)步驟:
1.修改package.json中的scripts薇搁,添加命令執(zhí)行對應(yīng)的build文件
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js --host 0.0.0.0",
"start": "npm run dev",
"lint": "eslint --ext .js,.vue src",
"build": "node build/build.js", //生產(chǎn)環(huán)境
"build:mraw": "node build/build.mraw.js" //預(yù)生產(chǎn)環(huán)境
},
2.找到config目錄下prod.env.js讨便,復(fù)制一份更名為mraw.env.js,并做如下修改:
'use strict'
module.exports = {
NODE_ENV: '"mraw"'
}
3.找到build目錄下webpack.prod.conf.js嚼摩,復(fù)制一份改名為webpack.mraw.conf.js,并修改如下代碼
const env = require('../config/mraw.env')
4.找到build目錄下build.js解恰,復(fù)制一份纳胧,并改名為build.mraw.js,并修改如下代碼
//修改此處名稱為預(yù)生產(chǎn)
process.env.NODE_ENV = 'mraw'
//引入預(yù)生產(chǎn)配置文件
const webpackConfig = require('./webpack.mraw.conf')
5.對webpack.base.conf.js文件做如下修改
output: {
path: config.build.assetsRoot,
filename: '[name].js',
//非開發(fā)環(huán)境霉撵,文件都按生產(chǎn)環(huán)境公共路徑打包
publicPath: process.env.NODE_ENV === 'development'
? config.dev.assetsPublicPath
: config.build.assetsPublicPath
}
6.最后修改config目錄下index.js文件磺浙,如下
//添加如下代碼:
const processEnv = process.env.NODE_ENV;
let buildFolder; //打包后的文件夾名稱
if (processEnv == 'production') {
buildFolder = 'www';
} else (processEnv == 'mraw'){
buildFolder = 'mraw';
}
//修改如下代碼:
build: {
// Template for index.html
>>>>>>>>>>>>此處做了修改
index: path.resolve(__dirname, `../dist/${buildFolder}/index.html`),
// Paths
>>>>>>>>>>>>此處做了修改
assetsRoot: path.resolve(__dirname, `../dist/${buildFolder}`),
assetsSubDirectory: 'static',
>>>>>>>>>>>>此處做了修改
assetsPublicPath: './',
/**
* Source Maps
*/
productionSourceMap: true,
// https://webpack.js.org/configuration/devtool/#production
devtool: '#source-map',
// Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin
productionGzip: false,
productionGzipExtensions: ['js', 'css'],
// Run the build command with an extra argument to
// View the bundle analyzer report after build finishes:
// `npm run build --report`
// Set to `true` or `false` to always turn it on or off
bundleAnalyzerReport: process.env.npm_config_report
}