【问题标题】:Why is devDependencies' pruning skipped even if NPM_CONFIG_PRODUCTION is true?为什么即使 NPM_CONFIG_PRODUCTION 为真,也会跳过 devDependencies 的修剪?
【发布时间】: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 npm


    【解决方案1】:

    Heroku 的 Node.js 构建包的默认行为是安装 dependenciesdevDependencies,构建 slug,然后剥离 devDependencies。它们将在构建过程中可用,但之后不可用。

    Setting NPM_CONFIG_PRODUCTION to true prevents devDependencies from being installed in the first place:

    您可以通过设置环境变量NPM_CONFIG_PRODUCTION=trueYARN_PRODUCTION=true 来指示Heroku 仅安装依赖项。

    由于从未安装过devDependencies,因此无需修剪它们。没有什么可以去掉的。

    (从技术上讲,buildpack skips pruning if NPM_CONFIG_PRODUCTION is non-null;它的实际值与这部分逻辑无关。)

    【讨论】:

    • 不,它们没有被跳过,实际上我可以通过 heroku run bash 命令在 node_modules 文件夹中找到它们。为什么说“文档显示如果 NPM_CONFIG_PRODUCTION=true 将跳过 devDependencies”?应该是相反的。
    • @toninotrip,NPM_CONFIG_PRODUCTION 的确切值是多少?是true 还是'true'
    • 它是true,不带引号。我通过heroku config:get command 获得它,并且还通过在 Heroku 应用程序仪表板上显示配置变量来获得它。好奇怪..
    • 哦,等等,我知道这里发生了什么。我要重写我的答案。
    • @toninotrip, 和NPM_CONFIG_PRODUCTION=true devDependencies 不应该被安装,所以没有必要修剪它们并跳过修剪。他们不应该在服务器上。是的,NPM_CONFIG_PRODUCTION=false 和取消设置 NPM_CONFIG_PRODUCTION 给出了两个不同的结果。在第一种情况下,devDependencies 被安装并保持可用。在第二种情况下,它们会被安装,但在构建完成后会被删除。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 2013-11-24
    • 2013-09-12
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多