Webpack多环境搭建

在实际项目中,每每会由于开发、测试以及生产环境的不一样来采用不一样的配置。能够是接口host不一样,亦或者是写入cookie的domain不一样。css

所以,咱们须要对webpack进行不一样的配置来完成这样的需求。html

在项目中,咱们使用vue-cli 直接初始化的项目,会有 ./build 以及 ./config 两个文件夹vue

vue-cli初始化

这里将webpack的config文件分为 base,dev,prod。其中,base文件中的参数配置是公用的,dev和prod是不一样环境的不一样配置。在合并配置时会用到一个插件webpack-merge,固然,vue-cli init的会自带,本身安装的话以下--node

npm install webpack-merge --save

开发中,咱们一般会将环境分为开发,测试,生产。。。先贴段代码webpack

./config/index
var path = require('path')

module.exports = {
    build: {
            testEnv: require('./test.env'), //测试配置
            prodEnv: require('./prod.env'), // 生产配置
            index: path.resolve(__dirname, '../dist/index.html'),
            assetsRoot: path.resolve(__dirname, '../dist'),
            assetsSubDirectory: 'static',
            assetsPublicPath: './',          //请根据本身路径配置更改
            productionSourceMap: false,
            productionGzip: false,
            productionGzipExtensions: ['js', 'css']
    },
    dev: {
            env: require('./dev.env'),  //开发配置
            port: 7777,
            autoOpenBrowser: true,
            assetsSubDirectory: 'static',
            assetsPublicPath: '/',
            proxyTable: {},
            cssSourceMap: false
    }
}
在config/index中,将build中的env配置进行修改,增长为测试和生产环境,本地开发的环境配置不须要修改
webpack.prod.conf.js
...

var env = config.build[process.env.env_config+'Env']
//prod中的修改
...
package.json
"scripts": {
    "dev": "node build/dev-server.js",
    "build:prod": "cross-env NODE_ENV=production env_config=prod node build/build.js",
    "build:test": "cross-env NODE_ENV=production env_config=test node build/build.js",
  },
config/prod.env.js
module.exports = {
    NODE_ENV: '"production"',
    ENV_CONFIG: '"prod"',
    CONFIG_TEXT: '"我是生产环境哦"',
};
config/test.env.js
module.exports = {
    NODE_ENV: '"production"',
    ENV_CONFIG: '"test"',
    CONFIG_TEXT: '"我是测试环境哦"',
};
#开发调试
npm run dev
#测试环境构建
npm run build:test
#生产环境构建
npm run build:prod
经过执行命令修改NODE_ENV 和 ENV_CONFIG 构建不一样的配置,须要更多的环境的时候,能够经过修改config/index的build增长env,packjson增长命令来写入更多的环境配置

在项目中,咱们能够直接 process.env.CONFIG_TEXT 获取到当前环境的参数变量web

process.env 是在dev.conf或prod.conf 中plugins 下配置的
new webpack.DefinePlugin({
      'process.env': env
    })

新人,第一次写博,不喜勿喷哦!vue-cli

相关文章
相关标签/搜索