如何防止npm在生产安装时解析设备依赖关系

y1aodyip  于 2022-11-14  发布在  其他
关注(0)|答案(2)|浏览(143)

我正在monorepo中构建一个微服务应用程序,其中包含一系列微服务和一个commons包。这个commons包从未发布到npm。(包是通过yarn工作空间管理的)
通过使用parcel,commons包被捆绑到产品代码中,因此我不需要在运行时安装它。
每个微服务都在自己的docker容器中运行。因此,当我构建docker容器时,理想情况下,我希望忽略这个“commons”依赖项,并安装所有其他的依赖项。AFAIK,唯一的方法是将“commons”包放在devDependencies中。
但是,即使我只将其添加到devDependencies并运行npm i --only=production,npm仍然尝试 * 解析 * 包,并且仍然抛出ETARGET错误。
有没有什么方法可以 * 完全 * 忽略devDependencies?我唯一的想法是编写一个脚本,在运行npm install之前从package.json中删除devDependencies字段,但我想先问一下,以确保我没有遗漏任何内容。

weylhg0b

weylhg0b1#

在跟踪此问题here (#4967)的npm/cli repo上有一个GitHub问题,其中此行为被归类为bug。
因此,为了回答你的问题,就GitHub问题的当前状态而言,预期的行为是devDependencies不会在--production模式下被尝试解决,并且一旦修复完成,你不需要做任何额外的事情来获得这种行为。我不认为你错过了任何东西。
你想到的变通办法在我看来是合理的。
在GitHub问题上,你可以用竖起大拇指的React来表示“我也是”(请不要用“我也是”的评论来垃圾邮件评论)。

wqsoz72f

wqsoz72f2#

要仅在生产环境中安装软件包而不安装devDependencies,

npm install --production

Docs about npm install is here

相关问题