这里说下,webpack打包里面涉及到的东西,不止webpack,还有node的知识,

node的全局变量process,process.env用于返回用户环境信息对象,因为是node的全局变量,所以无需使用reqiure进行引入。

网上很多人说:npm_lifecycle_event变量是返回当前正在运行的脚本名称,pretest、test、posttest。其实就是代表当前执行循环的哪个阶段,参考链接:https://segmentfault.com/a/1190000008832423

打印这个process.env,如下图所示:

可以看到加上的变量_BASEURL已经生效,这是在dev环境下面进行打印的,test和prod环境是看不到的,只能是在打包文件中查看。

然后呢,在开发源码中,我们进行判断这个声明周期环境变量,这个是sf公司埋点的插件文件(如果没有涉及可以不用管):

/**
* 相应的生产地址和测试环境地址
*/
SfGather.url =
process.env.npm_lifecycle_event !== 'build'
? 'http://218.17.248.243:40021/json_data'
: 'https://inc-ubas-web.sf-express.com/json_data'
console.log('SfGather.url ' + SfGather.url)

如果是build就用生产环境,如果不是,就用测试环境,这个是埋点的测试和生产环境的一个区分,那么同理,我们Axios请求一样的,在源码中:

axios.defaults.baseURL = process.env._BASEURL + '/api/v1/'
Vue.prototype.$axios = axios

process.env对象中添加env_BASEURL(名字可自定义),该变量已经在prod.env.js+request.json中定义。

在build.js中,我们把它设置为:

process.env.NODE_ENV = 'production'

在package.json中:

"scripts": {
"dev": "node build/dev-server.js",
"start": "npm run dev",
"test": "node build/build.js",
"build": "node build/build.js"
},

然后在config/prod.env.js中:

'use strict'
const URL = require('./request.json');
const target = process.env.npm_lifecycle_event
let obj = {}
if(target === 'test') {
obj = {
NODE_ENV: '"production"',
_BASEURL: `'${URL.test.baseURL}'`
}
console.log('yeah')
} else {
obj = {  
NODE_ENV: '"production"',
_BASEURL: `'${URL.prd.baseURL}'`
}
}
module.exports = obj;

在config添加文件request.json

{
"dev":{
"baseURL": "http://localhost:8088"
},
"test":{
"baseURL": "http://sfim-common.sit.sf-express.com/sfimecsauth/workboard"
},
"prd":{
"baseURL": "http://sfim-mcommon.sf-express.com/sfimecsauth/workboard"
}
}

所以关键点在哪里?首先是npm scripts里面进行指令的添加,然后再进行环境变量的赋值区分,在node的process.env对象中添加baseURL,就是这么简单。

当你选择了一种语言,意味着你还选择了一组技术、一个社区。——Joshua Bloch【完】

vue+webpack怎么分环境进行打包的更多相关文章

  1. windows环境下搭建vue+webpack的开发环境

    前段时间一直在断断续续的看vue的官方文档,后来就慢慢的学习搭建vue的开发环境,已经有将近两周了,每到最后一步的时候就会报错,搞的我好郁闷,搁置了好几天,今天又接着搞vue的开发环境,终于成功了.我 ...

  2. vue + webpack + gulp 简单环境 搭建

    一.物料准备 废话不多说,直接上 package.json { "name": "vwp", "version": "1.0.0& ...

  3. Vue + Webpack 根据不同环境打包

    修改 prod.env.js // 当前正在运行的脚本名称 const TARGET = process.env.npm_lifecycle_event // 第一个参数 let argv = pro ...

  4. windows下搭建vue+webpack的开发环境

    1. 安装git其右键git bash here定位比cmd的命令行要准确,接下来的命令都是利用git bash here.2. 安装node.js一般利用vue创建项目是要搭配webpack项目构建 ...

  5. windows下vue+webpack前端开发环境搭建及nginx部署

    一.开发环境搭建 1.前端框架一般都依赖nodejs,我们首先要安装node.js.请参考http://www.cnblogs.com/wuac/p/6381819.html. 2.由于许多npm的源 ...

  6. Spring boot项目分环境Maven打包,动态配置文件,动态配置项目

    Spring boot Maven 项目打包 使用Maven 实现多环境 test dev prod 打包 项目的结构 在下图中可用看出,我们打包时各个环境需要分开,采用 application-环境 ...

  7. Windows 环境下vue+webpack前端开发环境搭建

    一.开发环境搭建 1.前端框架一般依赖node.js,我们首先要安装node.js. 2.由于许多npm 的源都在国外的地址,安装起来特别慢,所以我们这里利用淘宝的镜像服务器. 安装命令为:npm i ...

  8. windows环境下安装vue+webpack的开发环境

    本人最近在学习vue,在学习的过程中遇到对的问题和解决方法 1.我们首先要安装node.js.node.js的官方地址为:https://nodejs.org/en/download/,下载完毕,按照 ...

  9. Vue项目分环境打包的实现步骤

    转:https://blog.csdn.net/xinzi11243094/article/details/80521878 方法一:亲测真的有效 在项目开发中,我们的项目一般分为开发版.测试版.Pr ...

随机推荐

  1. 概率DP——BZOJ4008 [HNOI2015]亚瑟王

    [HNOI2015]亚瑟王 Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑.他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂 ...

  2. Java程序员常用Linux性能分析命令

    性能分析 vmstat 虚拟内存统计 用法 Usage: vmstat [options] [delay [count]] Options: -a, --active active/inactive ...

  3. 实现JS脏话筛选替换的几种途径

    一.逐个替换用replace 缺点:筛选的脏话集太少 var oSize = $(this).siblings('.flex-text-wrap').find('.comment-input').va ...

  4. 牛客-Corn Fields

    题目传送门 sol:状压和动规,把每一行的m个01压缩成一个int 状压dp #include "bits/stdc++.h" using namespace std; ; con ...

  5. [LC] 226. Invert Binary Tree

    Invert a binary tree. Example: Input: 4 / \ 2 7 / \ / \ 1 3 6 9 Output: 4 / \ 7 2 / \ / \ 9 6 3 1 /* ...

  6. python爬虫心得(第一天)

    爬虫是什么? 我个人觉得用简单通俗的话来说就是在浏览网页的过程中将有价值的信息下载到本地硬盘或者是储存到数据库中的行为. 爬虫的基础认知 可以参考此链接:https://www.imooc.com/a ...

  7. gitlab两种连接方式:ssh和http对比

    共同点: 都可以使用git clone 地址 .将项目下载到本地. 不同点: 当将本地修改上传到远程服务器时,http需要输入用户名密码,ssh. 1.ssh方式: 这是一种相对安全的方式这要求将本地 ...

  8. OpenResty+缓存穿透基本介绍

    OpenResty                1.lua表达式                 2.Nginx的安装                3.OpenResty              ...

  9. <JZOJ5907>轻功

    dp大水题 由于未知错误wa了一个点 乱改了一下就A了 瘫 #include<cstdio> #include<iostream> #include<cstring> ...

  10. numpy的基础计算2

    import numpy as np A = np.arange(14,2,-1).reshape((3,4)) #平均值 print(np.mean(A)) print(A.mean()) prin ...