vue 多环境打包并支持动态修改

首先实现 开发环境与生产环境 配置

  • 配置文件
let devConfig = {
    url:'http:xxxx',
    // xxxx
}
let produConfig = {
    url:'http:xxxx',
    // xxxx
}
let config = produConfig
if (process.env.NODE_ENV === 'development') {
    config = devConfig
}
// $1
export default config

此时 npm run build或dev 会根据NODE_ENV进行判断使用

  • 如果有其他或更多配置文件 需要以下操作

    • 通package.json文件目录下新建 .env.xxx(您的配置名称)

      NODE_ENV = xxx(您的配置名称)
      
    • 并在package.json中加入scripts运行命令(这里是vuelic,如果有webapck或其他的用相应命令)

      "xxx": "vue-cli-service xxx",
      
    • 然后操作其上 $1

  • 需求:打包后dist 需要动态设置配置文件

    • 同package.json目录:public->static->config.js(如果没有新建)

    在这里插入图片描述

    • config就是配置文件,这样打包后dist会多出一个static文件夹并含有config.js此时修改dist的中config.js是无效的

    • 因为:通过以上方式,config.js是存在vue中的main.js文件的引用链中的,这样webpack会处理成一个js文件,所以修改外面的config.js文件不会影响打包后的js

在这里插入图片描述

可以看出config里的配置是被打包到app.xxx.map,这样你修改外层config.js 肯定是失效的

  • 解决方法

    • 需要config.js 脱离 引用链

      var _$devConfig = {
          url:'',
          // xxxx
      }
      var _$produConfig = {
          url:'',
          // xxxx
      }
      
    • 通过html入口文件引入(尽量优先加载)

       <script src="./static/config.js"></script>
      

      注意:这里默认入口是public,可以从static开始引入

    • 引用判断

      let config = window._$produConfig
      if (process.env.NODE_ENV === 'development') {
          config = window._$devConfig
      }
      
    • 这样打包就会将public 的config.js 抛出,并webpack不会去处理

_$devConfig

}
```
  • 这样打包就会将public 的config.js 抛出,并webpack不会去处理

  • 此时修改dist中的config.js 是会实时替换的。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐