【webpack】拆分webpack.config.js文件

背景

  • 一般情况,一个项目插件比较多,有些配在开发环境,有些配在生产环境,如果全都写在一个webpack.config.js中就会显得很冗余,不好管理,所以一般要拆成三个配置文件,其中一个是生产环境和开发环境共有的,一个是只有生产环境的,一个是只有开发环境的。

流程

一、准备工作

  • 首先还是init一下然后装好webpack和webpack-cli。
  • 新建个文件夹myconfig,里面建好3个文件webpack.base.js,webpack.prod.js,webpack.dev.js。
  • 本文使用的包为:
  • webpack
  • webpack-cli
  • webpack-merge

二、改写脚本命令测试

  • 在package.json中改写scripts,让他有一个生产打包命令,一个开发打包命令。
  "scripts": {
    "dev": "webpack --env.development --config ./myconfig/webpack.base.js",
    "prod": "webpack --env.production --config ./myconfig/webpack.base.js"
  },
  • --config可以指定哪个文件运行,而env上的development或者production可以在base文件中获取到,从而判断运行的是开发环境还是生产环境。
  • 下面改写webpack.base.js
module.exports=(env)=>{
    console.log(env);
}
  • 可以拿命令行试验下,打印出一个对象,键名就是设定的development或者production,值是true就对了。

三、 改写配置文件

  • 先在src文件夹下建个index.js,写个console.log。
  • 老样子还是要配入口出口,这里还需要装个包叫webpack-merge,安装-D方式即可。
const dev = require('./webpack.dev');
const prod = require('./webpack.prod');
const path = require('path');
const merge = require('webpack-merge');


module.exports = (env) => {
    let isdev = env.development;
    const base = {
        entry: path.resolve(__dirname, '../src/index.js'),
        output:{
            filename:'bundle.js',
            path:path.resolve(__dirname,'../dist')
        }
    }    
    if(isdev){
        return merge(base,dev);
    }else{
        return merge(base,prod);
    }
}
  • 我们再把dev和prod文件写下,也就是需要压缩的时候就是生产,不需要压缩就是开发,就是配个mode。
module.exports={
    mode:'development'
}
  • 另一个文件同理,就是development 改成production。
  • 然后运行npm run dev和prod看看生成的是不是一个压缩的一个没压缩的即可。

总结

  • 主要是利用webpack --config指定配置文件以及webpackmerge来合并配置项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

业火之理

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值