思路:新建一个 process.env 变量。

把 webpack 配置放到 vue.config.js 里面。

如果根目录下没有该文件,新建。配置参考:https://cli.vuejs.org/zh/config/

vue.config.js 配置参考:

const webpack = require('webpack')
const merge = require('webpack-merge')
const env = process.env module.exports = {
publicPath: './',
outputDir: 'dist',
assetsDir: 'static',
productionSourceMap: false,
configureWebpack: {
output: {
filename: '[hash].js'
},
plugins: [
new webpack.DefinePlugin({
'process.env': merge(env, {
'AJAX_URL': '"' + process.env.AJAX_URL + '"' // 新建 AJAX_URL 变量
})
})
]
}
}

安装工具

npm install --save-dev cross-env

npm 命令加上 AJAX_URL 的赋值操作,

dev:开发环境

testing:灰度发布环境

production:生产环境

"scripts": {
"dev:dev": "cross-env AJAX_URL=dev npm run dev",
"dev:test": "cross-env AJAX_URL=testing npm run dev",
"dev:pro": "cross-env AJAX_URL=production npm run dev",
"dev": "vue-cli-service serve",
"build:dev": "cross-env AJAX_URL=dev npm run build",
"build:test": "cross-env AJAX_URL=testing npm run build",
"build:pro": "cross-env AJAX_URL=production npm run build",
"build": "vue-cli-service build"
}

这样,就可以在业务代码里面使用 process.env.AJAX_URL 这个变量了。

可以把ajax请求的配置放到一个文件里面

let SITE_CONFIG

if (process.env.AJAX_URL === 'production') {
SITE_CONFIG = { // 生产环境
baseUrl: '//www.example.com/', // api接口请求地址
cdnUrl: '//www.cdn.com/' // cdn地址
}
} else if (process.env.AJAX_URL === 'testing') {
SITE_CONFIG = { // 灰度发布环境
baseUrl: '//test.example.com/', // api接口请求地址
cdnUrl: '//test.cdn.com/' // cdn地址
}
} else if (process.env.AJAX_URL === 'dev') {
SITE_CONFIG = { // 开发环境
baseUrl: '//dev.example.com/', // api接口请求地址
cdnUrl: '//dev.cdn.com/' // cdn地址
}
} else {
SITE_CONFIG = { // 本地环境
baseUrl: '/', // api接口请求地址
cdnUrl: '/' // cdn地址
}
} export default SITE_CONFIG

以上。

只需运行对应命令就可以实现平台切换了。

vue-cli 3.x 配置多环境的更多相关文章

  1. Vue学习笔记(五)——配置开发环境及初建项目

    前言 在上一篇中,我们通过初步的认识,简单了解 Vue 生命周期的八个阶段,以及可以应用在之后的开发中,针对不同的阶段的钩子采取不同的操作,更好的实现我们的业务代码,处理更加复杂的业务逻辑. 而在这一 ...

  2. vue cli 3 lintOnSave 配置有时无效问题

    一个使用vue cli 3.2创建的项目,创建时未开启 lintOnSave,后来希望开启并设置为 lintOnSave: 'error',但配置不生效. 解决方法1:新创建项目(此时vue cli ...

  3. vue cli 3.x 配置使用 sourceMap

    项目使用vue cli 3.x搭建,没有了配置文件,如何更方便的查找到对应的scss文件,配置项目支持sourceMap方式? 分二步走: 1.项目根目录(不是src目录,不要搞错了)添加vue.co ...

  4. vue,react,angular本地配置nginx 环境单页面应用

    一.起因:项目使用VUE,和react.构建单页面应用.在nginx的环境下只有一个index.html入口.这时候默认能够访问到vue,和react 路由 配置中的首页.内部连接也能够跳转但是不能给 ...

  5. vue/cli 3.0配置NODE_ENV

    原文地址 在项目开发中我们需要配置环境变量,开发环境,生产环境和测试环境.在cli 2.0的版本中我们是通过在config文件夹进行配置的,vue/cli 3.0相对简单,只需要在项目根目录创建.en ...

  6. Vue CLI 是如何实现的 -- 终端命令行工具篇

    Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供了终端命令行工具.零配置脚手架.插件体系.图形化管理界面等.本文暂且只分析项目初始化部分,也就是终端命令行工具的实现. 0. 用法 ...

  7. 使用 vue-cli-service inspect 来查看一个 Vue CLI 3 项目的 webpack 配置信息(包括:development、production)

    使用 vue-cli-service inspect 来查看一个 Vue CLI 3 项目的 webpack 配置信息(包括:development.production) --mode 指定环境模式 ...

  8. @vue/cli 3.x项目脚手架 webpack 配置

    @vue/cli  是一个基于 Vue.js 进行快速开发的完整系统. @vue/cli   基于node服务  需要8.9以上版本 可以使用 nvm等工具来控制node版本  构建于 webpack ...

  9. @vue/cli 3.x 版本配置productionGzip提高性能

    第一步:安装插件 npm i -D compression-webpack-plugin 第二步:引入.在文件vue.config.js里导入compression-webpack-plugin,并添 ...

  10. VUE CLI环境搭建文档

    VUE CLI环境搭建文档 1.安装Node.js 下载地址 https://nodejs.org/zh-cn/download/ 2.全局安装VUE CLI win+R键打开运行cmd窗口输入一下代 ...

随机推荐

  1. leetcode 784. Letter Case Permutation——所有BFS和DFS的题目本质上都可以抽象为tree,这样方便你写代码

    Given a string S, we can transform every letter individually to be lowercase or uppercase to create ...

  2. luogu 1121 环状最大两段子段和

    题目大意: 一个序列看做一个环 选两段数使它们和最大 思路: 定义一个dp数组i j 0/1 表示前i个取了连续的j段 0/1表示取不取第i个 但是因为看做一个环 首尾相接的情况可以看做是选三段,其中 ...

  3. 10.05FZSZ Day2模拟总结

    今天的题目难度比昨天小一些,但是太菜的我还是啥也不会. 今天的出题大佬是Heaplex,他的题目中倒是出现了ZZQ,不知道是否是本人? T1.a 期望得分30,实际得分30 这道题开场发现好像有什么小 ...

  4. SAP中的货币与金额

  5. activiti遇到的问题

    1.act_hi_detail表里面没有数据 原因是没有加历史变量的判断 2.流程图添加网关,写流转表达式 比如请假流程   大于3天小于5天的条件:${请假实体类.属性名称}

  6. $CF1153A\ Serval\ and\ Bus$

    看大佬的代码都好复杂(不愧是大佬\(orz\) 蒟蒻提供一种思路 因为求的是最近的车对吧\(qwq\) 所以我们可以用一个\(while\)循环所以没必要去用什么 \(for...\) 至于这是\(d ...

  7. [Qt Creator 快速入门] 第3章 窗口部件

    从这一章开始正式接触Qt的窗口部件.在第2章曾看到 Qt Creator 提供的默认基类只有 QMainWindow.QWidget 和 QDialog 这3种.QMainWindow 是带有菜单栏和 ...

  8. Spring Cloud学习(一)

    SpringCloud是什么? Spring Cloud是一个微服务框架,相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案. Spring Cloud对微服务基础框 ...

  9. oracle 自定义类型 type / create type

    一:Oracle中的类型有很多种,主要可以分为以下几类: 1.字符串类型.如:char.nchar.varchar2.nvarchar2. 2.数值类型.如:int.number(p,s).integ ...

  10. apache-storm-0.9.6.tar.gz的集群搭建(3节点)(图文详解)

    不多说,直接上干货! Storm的版本选取 我这里,是选用apache-storm-0.9.6.tar.gz Storm的本地模式安装 本地模式在一个进程里面模拟一个storm集群的所有功能, 这对开 ...