Vue中区分development和product和test

Vuecli 3.0 环境下

(1) 在根目录下面新建一个文件夹 config 里面写 3 个文件

  • api_development.js

  • api_production.js

  • api_test.js

(2) 在刚才创建的 3 个文件里面写对应的代码

  • api_development.js
let url = {
  homeurl: '这就是开发环境',
}
export default url
  • api_production.js
let url = {
  homeurl: '这就是生产环境',
}
export default url
  • api_test.js
let url = {
  homeurl: '这就是测试环境',
}
export default url

(3) 在根目录创建 3 个文件以.env 开头,特别提醒是根目录 具体的看图

(4) 在对应的 env 文件里面写不同的代码

  • .env.development
NODE_ENV = 'development'

VUE_APP_MODE = 'development'
  • .env.production
NODE_ENV = 'production'

VUE_APP_MODE = 'production'
  • .env.test
NODE_ENV = 'test'

VUE_APP_MODE = 'test'

(5)在根目录新建 config.js 文件

let ROOT
if (process.env.VUE_APP_MODE == 'development') {
  console.log('开发环境')
  ROOT = require('@/config/api_development.js')
} else if (process.env.VUE_APP_MODE == 'production') {
  console.log('生产环境')
  ROOT = require('@/config/api_production.js')
} else if (process.env.VUE_APP_MODE == 'test') {
  console.log('测试环境')
  ROOT = require('@/config/api_test.js')
}

export default ROOT.default

(6) 组件里引入 config.js

<template>
  <div>{{message}}</div>
</template>

<script>
  import url from '@/config.js'
  export default {
    mounted() {
      console.log(url)
      this.message = url.homeurl
    },
    data() {
      return {
        message: '',
      }
    },
  }
</script>

<style lang="less" scoped></style>

(7) 在 package.json 里面

  • 找到 scripts 里面写命令,命令多少看个人情况
{
  "scripts":{
    "serve":"vue-cli-service serve --mode development",
    "build-stage":"vue-cli-service build --mode test",
    "build-proud":"vue-cli-service build --mode production",
    "serve-production": "vue-cli-service serve --mode production",
    "serve-development": "vue-cli-service serve --mode development",
    "serve-stage": "vue-cli-service serve --mode stage",
    "serve-test": "vue-cli-service serve --mode test",
    "lint":"vue-cli-service lint"
  }
}

(8) 然后在依据不同的命令调用不同的方法

Vuecli2.0 环境

(1) 复制一份 build/build.js 文件命名为 build/build-test.js 修改这三处地方

(2)复制一份 build/webpack.prod.conf.js 文件命名为 build/webpack.test.conf.js 修改这三处地方

(3)复制一份 config/prod.env.js 文件命名为 config/test.env.js

  • test.env.js
'use strict'
const merge = require('webpack-merge')
const devEnv = require('./dev.env')

module.exports = merge(devEnv, {
  NODE_ENV: '"testing"',
  BASE_URL: '"https://test.com"',
})
  • dev.env.js
'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')

module.exports = merge(prodEnv, {
  NODE_ENV: '"development"',
  BASE_URL: '"https://localhost:8080"',
})
  • prod.env.js
'use strict'
module.exports = {
  NODE_ENV: '"production"',
  BASE_URL: '"https://prod.com"',
}

(4) 在 package.json 文件里添加一条 npm run test 的启动项

(5) 使用 可以在封装 axios 的时候带上 process.env.BASE_URL

import Axios from 'axios'

const axios = Axios.create({
  baseURL: process.env.BASE_URL,
  headers: {
    'Content-Type': 'application/json;charset=UTF-8',
  },
})
export default axios

文章作者: 雾烟云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 雾烟云 !
  目录