npm 两次包含不同版本的相同依赖项
npm including same dependency twice with different versions
是否可以在 package.json 中包含相同的依赖项两次,但版本不同:
"dependencies": {
"projectX-v1.0.0": "ssh://git@github.com/xxx/projectX.git#v1.0.0",
"projectX-v1.0.1": "ssh://git@github.com/xxx/projectX.git#v1.0.1"
}
我能想到的最好办法是将包含的 projectX
的名称(见上文)更改为 projectX-v1.0.0
和 projectX-v1.0.1
在其 releases/tags 和 package.json 以便在 node_modules
文件夹中得到两个单独的文件夹。
我需要它的原因是以下全方位存储库结构:
/omni/
/omni/frontend
/omni/frontend/projectA
/omni/frontend/projectB
...
/omni/package.json
projectA
将使用 projectX-v1.0.0
而 projectB
将使用 projectX-v1.0.1
(与 browserify 捆绑)
谢谢!
虽然社区有 talked about it extensively. That said, Scott Hardy's npm-install-version 包可以让您将节点模块安装到版本化或自定义目录中,但不适用于 vanilla npm。
NPM 表示他们不打算实现此功能,但我找到了解决方法。我在 github 上分叉了包存储库并重命名了它。然后我使用以下命令将这个新的 repo 作为依赖项安装在我的项目中:
npm i -S git+ssh://git@gitlab.com:<org>/<renamed-project>.git
现在,我可以升级实际的 npm 包并将项目中对它的所有引用更改为新的、重命名的项目 git 存储库依赖项。这是很多额外的工作,但我发现它比切换到 yarn 或其他具有包别名的包管理器更容易。
您可以创建别名:
npm i <package_alias>@npm:<package_name>@<version>
例如
npm i capacitor-core-v2@npm:@capacitor/core@"^2.0.0"
将添加到您的依赖项中
"dependencies": {
...
"capacitor-core-v2": "npm:@capacitor/core@^2.5.0",
}
参考文献:
是否可以在 package.json 中包含相同的依赖项两次,但版本不同:
"dependencies": {
"projectX-v1.0.0": "ssh://git@github.com/xxx/projectX.git#v1.0.0",
"projectX-v1.0.1": "ssh://git@github.com/xxx/projectX.git#v1.0.1"
}
我能想到的最好办法是将包含的 projectX
的名称(见上文)更改为 projectX-v1.0.0
和 projectX-v1.0.1
在其 releases/tags 和 package.json 以便在 node_modules
文件夹中得到两个单独的文件夹。
我需要它的原因是以下全方位存储库结构:
/omni/
/omni/frontend
/omni/frontend/projectA
/omni/frontend/projectB
...
/omni/package.json
projectA
将使用 projectX-v1.0.0
而 projectB
将使用 projectX-v1.0.1
(与 browserify 捆绑)
谢谢!
虽然社区有 talked about it extensively. That said, Scott Hardy's npm-install-version 包可以让您将节点模块安装到版本化或自定义目录中,但不适用于 vanilla npm。
NPM 表示他们不打算实现此功能,但我找到了解决方法。我在 github 上分叉了包存储库并重命名了它。然后我使用以下命令将这个新的 repo 作为依赖项安装在我的项目中:
npm i -S git+ssh://git@gitlab.com:<org>/<renamed-project>.git
现在,我可以升级实际的 npm 包并将项目中对它的所有引用更改为新的、重命名的项目 git 存储库依赖项。这是很多额外的工作,但我发现它比切换到 yarn 或其他具有包别名的包管理器更容易。
您可以创建别名:
npm i <package_alias>@npm:<package_name>@<version>
例如
npm i capacitor-core-v2@npm:@capacitor/core@"^2.0.0"
将添加到您的依赖项中
"dependencies": {
...
"capacitor-core-v2": "npm:@capacitor/core@^2.5.0",
}
参考文献: