我有一个npm项目,该项目需要同时在Mac和Windows构建服务器上构建。 (这是针对Ionic移动应用程序的,但与我的问题无关。)我们的依赖项之一是对fsevents
的依赖,在Windows计算机上,npm install
跳过了此依赖。但是,如果我运行npm list --depth=0
,则会返回有关缺少可选依赖项依赖项的错误。
要重现的最小package.json:
{
"dependencies": {
"@ionic/app-scripts": "^3.2.0"
}
}
然后我运行npm install
:
C:\temp\nodetest>npm install
...
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.7 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.7: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
请注意,由于它不支持Windows操作系统,因此它跳过了fsevents
。
现在我运行npm list:
C:\temp\nodetest>npm list --depth=0
C:\temp\nodetest
`-- @ionic/app-scripts@3.2.3
npm ERR! missing: mkdirp@0.5.1, required by node-pre-gyp@0.10.3
npm ERR! missing: minimist@0.0.8, required by mkdirp@0.5.1
npm ERR! missing: minimatch@3.0.4, required by ignore-walk@3.0.1
... (many other errors like this)
所有错误均归因于卸载的可选依赖项的依赖项。有什么办法可以抑制这些错误?我没有在npm list documentation中看到任何内容。
我的最终目标是验证是否已安装所有依赖项,否则将使构建失败。我目前正在使用npm list
来做到这一点。有一个更好的方法吗?我们不想在每个版本上都运行npm install
或npm update
,因为过去这样做时会遇到很多令人惊讶的错误。
我也尝试过npm list --depth=0 --no-optional
(基于this question),但是看起来--no-optional
命令与npm list
没有关系。