【问题标题】:Is there a way of making "npm ci" install devDependencies, or "npm install" not update package-lock.json?有没有办法让“npm ci”安装 devDependencies,或者“npm install”不更新 package-lock.json?
【发布时间】:2020-05-20 18:45:19
【问题描述】:

我正在尝试为在本地开发环境中安装我们的代码库的新开发人员整理文档。我想给他们命令:

  • 根据 package-lock.json 中的版本安装 devDependencies 和依赖项
  • 不更新 package-lock.json

"npm ci" 几乎完全符合我的要求,但似乎没有安装 devDependencies。 “npm install” 确实安装了 devDependencies,但它有时会修改 package-lock.json。

我可以想象像“npm install && git checkout package-lock.json”这样的笨拙的东西,但我觉得必须有一种更惯用的方式说“给我一个干净安装这个项目的依赖项以进行开发?”

【问题讨论】:

    标签: npm npm-install npm-ci


    【解决方案1】:

    npm ci 确实安装了依赖项和开发依赖项。但是如果你使用npm ci --production 或者如果你的NODE_ENV 设置为生产,那么它会避免安装开发依赖项。 请查看文档here

    使用--production 标志(或当NODE_ENV 环境 变量设置为生产),npm 将不会安装列出的模块 devDependencies。

    注意:--production 标志在添加 对项目的依赖。

    【讨论】:

    • 那么你如何npm install 然后npm test 然后删除devdependencies?如果你 npm install --only=production 那么你不能运行测试。
    • @Mark npm install --no-savenpm ci,然后是 npm test,然后是 npm prune --production
    • 您链接到的文档是用于npm installnpm ci 页面没有列出 ANY 命令行标志。 npm ci 是否支持与 npm install 相同的所有命令行标志?如果是这种情况,我希望在某处的文档中明确指出这一点。否则,有很多关于“使用此标志”的答案,人们可​​能会向忽略它们的命令添加选项。如果我运行npm install --foobar,npm 不会警告或抱怨这是一个无效选项。很有可能很多人都在使用什么都不做的 CLI 选项。
    • 对于未来的读者,只是为了澄清@mattpr 的评论,npm ci --production 确实按预期工作。 (我测试过。)也许有人可以提出 PR 来更新 npm ci 文档。
    【解决方案2】:

    覆盖NODE_ENV变量

    当您的 NODE_ENV 环境变量设置为 production 时,使用 npm ci 将不会安装 devDependencies。但是如果你还想安装 devDependencies

    npm ci --include=dev
    

    会成功的;)


    对于早于 NPM v7.x 的版本,请使用

    npm ci --also=dev
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-28
    • 2018-03-21
    • 2016-04-14
    • 1970-01-01
    • 2021-12-27
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多