webpack 配置 process.env 获取命令行参数

本文介绍如何利用webpack从命令行获取参数,实现在前端开发中根据不同环境设置不同服务器地址的需求。通过设置自定义参数http_env,修改webpack配置文件、package.json的scripts及服务器地址配置文件,实现灵活的环境切换。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

前端开发工作中可能会遇到这样的需求:本地开发、测试环境、客户的线上环境等对应的服务器地址不一样,例如本地localhost开发、打包到测试环境要换成192开头的地址、打包到线上环境要带https的地址,这个时候如果直接去改配置服务器地址的文件,那就需要改一个打包一次,很麻烦,最好是能通过 npm run xxx 的形式实现。

实现方式分为4个步骤:

  1. 确定 webpack 从命令行获取的参数名称 ,这里我定为 http_env。刚开始我是定为NODE_ENV,但是新版本的 webpack 打包的时候会根据 mode 选项来设置NODE_ENV,所以最好是定一个跟 NODE_ENV 不一样的参数名称。
  2. 修改 webpack 配置文件中的 plugins 选项 ,代码:
    plugins: [
     new webpack.DefinePlugin({
        'process.env': {
            'http_env': JSON.stringify(process.env.http_env)
        }
     })
    ]
    
  3. 修改 package.json 配置文件中的 scripts 选项,代码:
    "build": "cross-env http_env=production webpack --config ./build/webpack.prod.config.js",
    "start": "cross-env http_env=development webpack-dev-server --config ./build/webpack.dev.config.js",
    "hk": "cross-env http_env=hk webpack --config ./build/webpack.prod.config.js"
    
  4. 修改 配置服务器地址的文件, 代码:
    const ENV = process.env.http_env
    
    var apiAddr = 'http://192.168.1.201:8080/'
    var wsAddr = 'ws://192.168.1.201:8080/'
    
    if(ENV === 'production') {
     apiAddr = 'http://192.168.1.201/'
     wsAddr = 'ws://192.168.1.201/'
    } else if(ENV === 'hk') {
       apiAddr = 'https://test.hk'
     wsAddr = 'wss://test.hk'
    }
    
    export {
     apiAddr,
     wsAddr
    }
    

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值