【发布时间】:2019-04-07 03:30:58
【问题描述】:
当尝试将 Node.js 项目推送到 Heroku 时,我可以在日志行之间找到以下内容:
Pruning devDependencies
remote: Skipping because NPM_CONFIG_PRODUCTION is 'true'
现在,我期待在相反的条件下跳过修剪 (NPM_CONFIG_PRODUCTION=false)。
有什么想法吗?
【问题讨论】:
当尝试将 Node.js 项目推送到 Heroku 时,我可以在日志行之间找到以下内容:
Pruning devDependencies
remote: Skipping because NPM_CONFIG_PRODUCTION is 'true'
现在,我期待在相反的条件下跳过修剪 (NPM_CONFIG_PRODUCTION=false)。
有什么想法吗?
【问题讨论】:
Heroku 的 Node.js 构建包的默认行为是安装 dependencies 和 devDependencies,构建 slug,然后剥离 devDependencies。它们将在构建过程中可用,但之后不可用。
您可以通过设置环境变量
NPM_CONFIG_PRODUCTION=true或YARN_PRODUCTION=true来指示Heroku 仅安装依赖项。
由于从未安装过devDependencies,因此无需修剪它们。没有什么可以去掉的。
(从技术上讲,buildpack skips pruning if NPM_CONFIG_PRODUCTION is non-null;它的实际值与这部分逻辑无关。)
【讨论】:
NPM_CONFIG_PRODUCTION 的确切值是多少?是true 还是'true'?
true,不带引号。我通过heroku config:get command 获得它,并且还通过在 Heroku 应用程序仪表板上显示配置变量来获得它。好奇怪..
NPM_CONFIG_PRODUCTION=true devDependencies 不应该被安装,所以没有必要修剪它们并跳过修剪。他们不应该在服务器上。是的,NPM_CONFIG_PRODUCTION=false 和取消设置 NPM_CONFIG_PRODUCTION 给出了两个不同的结果。在第一种情况下,devDependencies 被安装并保持可用。在第二种情况下,它们会被安装,但在构建完成后会被删除。