我的目标是下载 npm 项目的整个依赖关系树,包括生产、开发、可选和对等依赖关系,这样我就可以将它们上传到我的离线 Sonatype-Nexus-Repository。
根据npm文档,
--include
选项可以启用不同类型依赖项的安装,例如可选、开发、对等和生产依赖项。例如:
npm install PACKAGE_NAME --no-save --include=prod --include=dev --include=optional --include=peer
但是,普通的 npm install 和上述命令都无法成功下载所有依赖项。例如,让我们考虑一下 package.json 中定义的 [email protected] 的依赖关系:
"dependencies": {
"esbuild": "^0.21.3",
"postcss": "^8.4.43",
"rollup": "^4.20.0"
},
"optionalDependencies": {
"fsevents": "~2.3.3"
},
"devDependencies": {
"@ampproject/remapping": "^2.3.0",
"@babel/parser": "^7.25.6",
"@jridgewell/trace-mapping": "^0.3.25",
"sass": "^1.77.8",
"sass-embedded": "^1.77.8",
...
},
"peerDependencies": {
"@types/node": "^18.0.0 || >=20.0.0",
"less": "*",
"lightningcss": "^1.21.0",
...
}
当我运行上述命令(
npm install with --include flag
s)时,它仅安装依赖项并跳过 devDependency、OptionalDependency 和 PeerDependency。
例如运行后:
npm install [email protected] --no-save --include=prod --include=dev --include=optional --include=peer
node_modules 文件夹中 ls 命令的输出如下所示:
@esbuild esbuild nanoid picocolors postcss @rollup rollup source-map-js @types vite
此列表仅包含主要依赖项,而其他类型完全被忽略。
我在寻找什么:
我需要一种方法来安装 npm 模块的所有依赖项,包括:
dependencies
devDependencies
optionalDependencies
peerDependencies
是否有特定的 npm 命令或解决方法来确保所有依赖项类型安装在一起?
(附加信息):为什么我需要所有包?我的目标是将项目的所有依赖项上传到离线的私有 npm 存储库(Sonatype Nexus Repository)。该存储库将作为包源,使我能够执行 npm install 并直接从私有存储库检索所有必需的包。
注意:我通过执行此命令使用最新的
npm
版本npm install -g npm@latest
返回...你尝试过这个吗?
npm install <package-name-here> --save; npm install peer-<package-name-here> --save; npm install dev-<package-name-here> --save-dev; npm install optional-<package-name-here> --save-optional
让我说清楚:
npm install express --save; npm install peer-express --save; npm install dev-express --save-dev; npm install optional-express --save-optional
看看它是否有效。
不幸的是...
在您注意到 peerDependency issues 部分之前(正确执行命令后),请先访问 here 和 here。
还是...
希望有帮助。