• vue根据不同命令打出不同环境的包


    一、vue3.x

    1.配置全局环境变量:
      在项目根目录创建配置文件:.env、.env.development、.env.production、.env.test

      说明:
      .env 无论开发环境还是生成环境都会加载这个文件
      .env.development 开发环境自动加载这个文件
      .env.production 生成环境自动加载这个文件
    此外,env 文件需要声明运行的环境,且定义变量需要以 VUE_APP_ 作为前缀。

    .env.development文件:

    //.env.development
    NODE_ENV = development
    VUE_APP_BASE_URL = http://dev.myhost.com

    .env.production文件:

    //.env.production
    NODE_ENV = production
    VUE_APP_BASE_URL = http://myhost.com

    .env.test文件:

    //.env.test
    NODE_ENV = test
    VUE_APP_BASE_URL = http://test.myhost.com

    2.配置package.json来启动不同的命令

    "scripts": {
        "dev": "vue-cli-service serve",//默认加载.env.development
        "test": "vue-cli-service serve --mode test",//加载.env.test
        "pro": "vue-cli-service serve --mode production",//加载.env.production
       "build": "vue-cli-service build",//默认加载.env.production
    "build:dev": "vue-cli-service build --mode dev",//加载.env.development "build:test": "vue-cli-service build --mode test",//加载.env.test },

    二、vue2.x

    1.项目安装cross-env。cross-env是node的一个设置和使用环境变量的脚本:npm install cross-env -D

    2.在根目录的package.json文件中,把scripts对象的build字段的值改为以下代码。

    "scripts": {
        "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
        "start": "npm run dev",
        "build": "cross-env env_config=prod node build/build.js",
        "build:test": "cross-env env_config=test node build/build.js",
        "build:pre": "cross-env env_config=pre node build/build.js"
    },

    代码说明:我们使用了cross-env脚本,新增了一个全局变量:env_config。后面根据这个全局变量的值,调用不同开发环境的变量值。调用方式:process.env.env_config。

    3,修改控制台提示语句:在根目录的build/build.js文件内找到const spinner = ora('building for production...')这行代码,将其改为const spinner = ora('正在打'+process.env.env_config+'环境包...'),方便打包的时候知道正在打哪个环境的包。

    4.在根目录的/config/prod.env.js文件内,为不同环境创建不同变量值。

    'use strict'
    module.exports = {
      prod: {
        NODE_ENV: '"production"',
        API_URL: '"生产环境接口url访问地址"'
      },
      test: {
        NODE_ENV: '"test"',
        API_URL: '"测试环境接口url访问地址"'
      },
      pre: {
        NODE_ENV: '"pre"',
        API_URL: '"预发布环境接口url访问地址"'
      },
    }

    5.修改.env的访问地址,以调用对应环境的变量,在根目录的/build/webpack.prod.conf.js文件内找到

    //找到以下代码
    new webpack.DefinePlugin({
      'process.env': env
    })
    //修改为如下,不再直接访问.env,而是访问.env下对应环境变量名的变量值
    new webpack.DefinePlugin({
      'process.env': env[process.env.env_config]
    })

    vue2.x根据不同命令打出不同环境的包就完成了,接下来打包即可。

    三、其它方式

    其实也可以直接通过判断当前域名,改变全局变量的值,能实现一个dist包适应多个开发环境。代码示例:

    //在全局js文件中,创建全局变量,之后直接引用即可
    // 域名常量
    const _const = {
      apiUrl: '生产环境服务器接口地址'
    }
    // 通过域名判断当前环境
    if(location.host === '测试环境域名' || location.host.indexOf('localhost')>-1) {
      _const.apiUrl = '测试环境服务器接口地址';// 测试环境服务器接口地址
    }
    if(location.host === '预发布环境域名') {
      _const.apiUrl = '预发布环境服务器接口地址';// 预发布环境服务器接口地址
    }
    
    export default {
      _const: _const
    }

    这个写法不太符合代码规范,以后接手你代码的人会一头雾水,他在.env文件中会找不到开发环境的变量。所以需要在.env文件中写上注释:

    'use strict'
    module.exports = {
      NODE_ENV: '"production"',
      // API_ROOT: '',//域名url等作为常量,存放于根目录该文件下:src/util/common.js。第1行
    }
  • 相关阅读:
    Mysql优化(1) 存储引擎、数据类型、字符集
    Mysql常用命令(5) 增加表的字段、修改表名、备份数据库
    Mysql常用命令(4) 插入、查询、删除、修改数据
    Navicat Premium v12.1.28 中文最新破解版(附:激活工具)
    MySQL命令:创建数据库、插入数据
    mysql初始化密码错误
    mysql第一次安装成功后初始化密码操作步骤
    MYSQL安装出现问题(服务无法启动,The service already exists)
    练习4-7 求e的近似值 (15 分)
    习题3-2 高速公路超速处罚 (15 分)
  • 原文地址:https://www.cnblogs.com/chenyoumei/p/14230104.html
Copyright © 2020-2023  润新知