【问题标题】:Install different version of npm packages in package.json conditionally有条件地在 package.json 中安装不同版本的 npm 包
【发布时间】:2021-03-28 09:10:12
【问题描述】:
我正在开发一个使用私有包的网络应用程序。
在某些情况下,我宁愿使用包的本地版本或该包的不同版本。
是否有任何解决方案表明在 package.json 中使用不同版本的包?
即:
npm install --local
而我的 package.json 看起来像:
...
"dependencies": {
...
"my_package": if(local) "address_to_local_package/" else "5.6.1"
...
}
【问题讨论】:
标签:
javascript
npm
dependencies
package.json
【解决方案1】:
npm 不适应这种情况(老实说,可能不应该)。这似乎是通常在运行时通过NODE_ENV 环境变量或类似机制处理的类型。模块会根据 NODE_ENV 设置为 "production" 还是 "development" 来更改行为。 (但这只是惯例。如果需要,您可以使用 "local" 之类的值。)因此,与其安装不同版本的模块,不如根据该环境变量的值有一个行为不同的版本。
如果你真的想要完全安装不同的代码库,这将需要一些努力,但你可以为npm 编写一个postinstall 脚本来运行。然后,您的模块就变成了一个脚本,然后postinstall 根据环境变量或命令行标志确定实际安装什么。不过,这对我来说似乎很脆弱。如果你走这条路,我会认真考虑你是否在这里解决了正确的问题。 NODE_ENV 看起来更加优雅和传统。