简体   繁体   English

为什么即使NPM_CONFIG_PRODUCTION为true,也会跳过devDependencies的修剪?

[英]Why is devDependencies' pruning skipped even if NPM_CONFIG_PRODUCTION is true?

When trying to push a Node.js project to Heroku, I can find between the log lines the following one: 当尝试将Node.js项目推送到Heroku时,我可以在日志行之间找到以下内容:

Pruning devDependencies
remote:        Skipping because NPM_CONFIG_PRODUCTION is 'true'

Now, I was expecting pruning is skipped at the opposite condition ( NPM_CONFIG_PRODUCTION=false ). 现在,我期望在相反的条件下跳过修剪( NPM_CONFIG_PRODUCTION=false )。

Any thoughts about? 有什么想法吗?

The default behaviour of Heroku's Node.js buildpack is to install dependencies and devDependencies , build the slug, and then strip out the devDependencies . Heroku的Node.js buildpack的默认行为是安装dependenciesdevDependencies ,构建该devDependencies ,然后devDependencies They'll be available during the build process but not afterwards. 它们将在构建过程中可用,但此后将不可用。

Setting NPM_CONFIG_PRODUCTION to true prevents devDependencies from being installed in the first place : NPM_CONFIG_PRODUCTION设置为true可以防止devDependencies安装devDependencies

You can direct Heroku to only install dependencies by setting environment variables NPM_CONFIG_PRODUCTION=true or YARN_PRODUCTION=true . 您可以通过设置环境变量NPM_CONFIG_PRODUCTION=trueYARN_PRODUCTION=true来指示Heroku仅安装依赖项。

Since devDependencies are never installed there is no need to prune them. 由于从未安装devDependencies ,因此无需修剪它们。 There's nothing to strip out. 没有什么可以删除的。

(Technically, the buildpack skips pruning if NPM_CONFIG_PRODUCTION is non-null ; its actual value doesn't matter for this part of the logic.) (从技术上讲, 如果NPM_CONFIG_PRODUCTION不为null ,则buildpack会跳过修剪 ;对于逻辑的这一部分,其实际值并不重要。)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM