Skip to content

请教下:增加的其它环境,编译打包怎么和正式的一样? #3739

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
JakeWoki opened this issue Apr 1, 2019 · 14 comments
Closed

Comments

@JakeWoki
Copy link

JakeWoki commented Apr 1, 2019

What problem does this feature solve?

就是压缩js等文件。3.0之前配置webpack就可以,3.0之后不知道怎么配置
TIM截图20190401110811
正式的
TIM截图20190401111248
增加的环境

What does the proposed API look like?

@haoqunjiang
Copy link
Member

NODE_ENV=production

注意:NODE_ENV 应专用于打包(因为太多工具依赖这个变量了,如果随便自定义的话会有意料外的问题),如需环境变量来区分环境,请用其他变量名

@haoqunjiang
Copy link
Member

在 4.0 中我们会把 NODE_ENV 默认设为 production

@JakeWoki
Copy link
Author

JakeWoki commented Apr 1, 2019

@sodatea 增加的环境打包的时候NODE_ENV用的是其它变量的,我的问题是想增加的环境打包的时候,和正式环境一样压缩js等文件,不然太大打开很慢。在3.0之前配置webpack是可以的,3.0之后不知道怎么配置

@haoqunjiang
Copy link
Member

但凡打包我们都建议使用 NODE_ENV=production

其他情况下需要压缩文件的话参考这里的配置

const TerserPlugin = require('terser-webpack-plugin')
const terserOptions = require('./terserOptions')
webpackConfig.optimization.minimizer([
new TerserPlugin(terserOptions(options))
])
}

@JakeWoki
Copy link
Author

JakeWoki commented Apr 1, 2019

@sodatea 一般有测试服务器、正式服务器等,如果打包都用 NODE_ENV=production,那怎么区分测试和正式呢?

@haoqunjiang
Copy link
Member

如果正式服务器和测试服务器的代码不一样的话,那测试的意义就小很多了。

如果只是为了调试的话,有 source map 应该就够了。
如果只是需要区分接口地址的话,可以用 NODE_ENV 以外的变量。

@JakeWoki
Copy link
Author

JakeWoki commented Apr 1, 2019

一般是接口地址不一样,如果用 NODE_ENV 以外的变量,是打包的时候改变量?这样不好吧

@haoqunjiang
Copy link
Member

https://cli.vuejs.org/zh/guide/mode-and-env.html#%E5%9C%A8%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BE%A7%E4%BB%A3%E7%A0%81%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F
在 .env 文件里定义一些以 VUE_APP_ 开头的变量就好了。这样职责区分更明确点。
NODE_ENV 在 npm 生态里已经被太广泛使用了,很多底层工具都会用到这个值(包括 webpack 的很多默认行为),如果用它来区分打包的话,碰到意料外的问题很难排查和修复。

@JakeWoki
Copy link
Author

JakeWoki commented Apr 1, 2019

谢谢 我试下

@pangao66
Copy link

能否npm run build 强制为NODE_ENV为production, 比如我现在要区分baseURL, 有 work ut, procution 三种环境, 在npm run serve的时候我可以用work ut 调试 我写.env.work 里面写个baseurl, 但是 如果是我要发布work服务器, 我还得写一个.env.buildwork 里面还得指定NODE_ENV为 production

@haoqunjiang
Copy link
Member

这个计划在 4.0 里改掉,因为是 breaking change

@chenendian
Copy link

@JakeWoki 这个问题你是怎么解决的 发现其他的环境都没办法压缩??

@jiangtao
Copy link

再加个环境变量 来区分业务的环境变量就好啦。官方有 .env文件也可以区分

@lhlGitHub
Copy link

注意:NODE_ENV 应专用于打包(因为太多工具依赖这个变量了,如果随便自定义的话会有意料外的问题),如需环境变量来区分环境,请用其他变量名

请问production 环境依赖哪些工具?我的项目就是把NODE_ENV设置test打包 ,然后打包出来的文件es6没有转译成 es5,安装了babel-polyfill也没用,虽然也后面改成NODE_ENV=production 就可以解决问题,但是我还是想知道到底是什么原因导致没有编译es6

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants