我正在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字段,但我想先问一下,以确保我没有遗漏任何内容。
2条答案
按热度按时间weylhg0b1#
在跟踪此问题here (#4967)的npm/cli repo上有一个GitHub问题,其中此行为被归类为bug。
因此,为了回答你的问题,就GitHub问题的当前状态而言,预期的行为是
devDependencies
不会在--production
模式下被尝试解决,并且一旦修复完成,你不需要做任何额外的事情来获得这种行为。我不认为你错过了任何东西。你想到的变通办法在我看来是合理的。
在GitHub问题上,你可以用竖起大拇指的React来表示“我也是”(请不要用“我也是”的评论来垃圾邮件评论)。
wqsoz72f2#
要仅在生产环境中安装软件包而不安装devDependencies,
Docs about npm install is here。