对于内部依赖特定版本的不同包,如何管理项目中多个版本的 npm 模块?

     2023-02-22     51

关键词:

【中文标题】对于内部依赖特定版本的不同包,如何管理项目中多个版本的 npm 模块?【英文标题】:How to manage multiple versions of npm modules in a project for different packages internally dependent on specific versions? 【发布时间】:2022-01-13 02:40:32 【问题描述】:

我的主要反应项目使用 "@material-ui/core": "^1.5.1" ,对于我正在尝试构建的新组件,我想使用 "@rjsf/material -ui":"3.2.1" 内部需要最新版本的 "@material-ui/core": "4.12.3"。在不干扰主项目的 @material-ui/core 版本的情况下,我如何安装这两个版本,并强制 "@rjsf/material-ui":"3.2.1" 引用 "@material-ui/core":" 4.12.3 英寸?

I looked here 寻找可能的解决方案,但 "@rjsf/material-ui":"3.2.1" 在内部仍然引用 "@material-ui/core": "^1.5.1" 并中断。这个问题的出路是什么?提前致谢。

【问题讨论】:

【参考方案1】:

要在您的环境中安装同一软件包的多个版本,您需要使用一种称为别名的原则。要应用它,请使用以下命令安装包:

npm i <package_name_alias>@npm:<package_name>

这里,&lt;package_name_alias&gt; 是用于通过 JavaScript 文件导入此特定版本包的名称,&lt;package_name&gt; 是您想要拥有多个版本的包。

我会给你一个关于react-bootstrap npm 包的例子。例如,您希望同时拥有基于 Bootstrap 4 和 Bootstrap 5 的版本。因此,您必须执行以下命令:

npm i react-bootstrap-v5@npm:react-bootstrap@2.0.3
npm i react-bootstrap-v4@npm:react-bootstrap@1.6.4

这样,要在您的 JavaScript 文件中导入基于 Bootstrap 4 的按钮,您需要导入 react-bootstrap 的 1.6.4 版本,您将使用其别名来实现:

import  Button  from 'react-bootstrap-v4'

如果您想要基于 Bootstrap 5 的按钮,您的导入将如下:

import  Button  from 'react-bootstrap-v5'

软件包的一个版本(在您的情况下是您正在使用的 @material-ui/core 版本)可能保持无别名。

【讨论】:

'@rjsf/material-ui' 期待最新版本的 @material-ui/core 及其中断。 你可能在 package-lock.json 的某个地方破坏了依赖链。因此我建议您删除 package-lock.json,删除整个 node_modules 文件夹,应用别名,然后运行 ​​npm i 重新安装项目的依赖项。

在不同bom版本共存的情况下,如何做好bom管理,防止文件混乱。

...抽象了一层,抽出一个base-parentbom来管理子项目的公共的依赖。为了项目的正确运行,必须让所有的子项目使用依赖项的统一版本,必须确保应用的各个项目的依赖项和版本一致,才能保证测试的和发布的是相同的结果。在我们... 查看详情

如何为不同的 SDK 目标管理同一类文件的多个版本?

...,因为我不知道这通常是如何实现的。假设您有一个针对特定SDK版本的项目。新版本的SDK向后不兼容,需要在一个类中更改三行。如 查看详情

package.json与package-lock.json的关系

...越流行,使用node和npm可以很方便的下载管理项目所需的依赖模块。package.json用来描述项目及项目所依赖的模块信息。那package-lock.json和package.json有啥关系和联系呢?大家都知道,package.json用来描述项目及项目所依赖的模块信息。... 查看详情

node可以同时用多个框架吗.js

...管理工具。由于在打开不同的项目时,不同的项目在安装依赖时可能会和node版本有关,所以这就需要我们在不同的项目下使用不同的node版本。nvm就是一个比较好用node管理工具,切换node版本。 查看详情

在 Yarn Workspace 的不同包中使用不同版本的依赖项

...epo比较陌生,所以如果这个问题得到了解答,请原谅我。对于使用YarnWorkspaces设置的Monorep 查看详情

pyenv的安装和简单使用(gitpyenvpyenv-virtualenv)(代码片段)

...以外,还需要对不同的软件包进行管理。大部分情况下,对于开源的库我们使用版本即可。但是,有时候可能需要对相同的Python版本,在不同的项目中使用不同版本的软件包。在这一节里,我们将介绍两个工具,即pyenv和virtualenv... 查看详情

软考知识点梳理--项目版本管理

...的,原则上没有差别,或者说,这些是并列的系列产品。对于这类差别很小的不同版本,互相也称为变体(var 查看详情

ideadependencies波浪线-缺少依赖问题

参考技术A第一问题描述对于idea下的maven工程,特别是从其他地方导入的新工程,右边maven管理工具中dependencies若出现红色波浪线。通常用以下方式尝试解决。1、检查repository和settings.xml文件中配置的仓库地址,File-->settings输入m... 查看详情

如何托管我自己的私有 conda 存储库?

...发布时间】:2016-05-2309:34:18【问题描述】:我有几个相互依赖的python项目。我对每个项目都有不同的发布版本,不同的项目可能依赖于特定项目的不同发布版本。我想在内部服务器上创建自己的conda存储库,在那里我可以将这些... 查看详情

pom文件必须和maven版本一致吗

...第三方jar包(不需要自己下载jar包)2)管理jar包之间的依赖关系(maven自动关联下载所有依赖的jar包)将项目拆分成若干个模块:借助于Maven可以将一个项目拆分成多个工程。使用下面的pom.xml(一个POM包含了关于你的项目的所有... 查看详情

android项目管理依赖方式总结(代码片段)

随着Android项目越来约大,管理项目中依赖的三方库成了一个非常重要的部分,若管理不当,不同module中可能会依赖同一个库的不同版本,这将导致非常严重的问题,要么是代码冲突,要么是APK包体积增大&#... 查看详情

android项目管理依赖方式总结(代码片段)

随着Android项目越来越大,管理项目中依赖的三方库成了一个非常重要的部分,若管理不当,不同module中可能会依赖同一个库的不同版本,这将导致非常严重的问题,要么是代码冲突,要么是APK包体积增大&#... 查看详情

android项目管理依赖方式总结(代码片段)

随着Android项目越来越大,管理项目中依赖的三方库成了一个非常重要的部分,若管理不当,不同module中可能会依赖同一个库的不同版本,这将导致非常严重的问题,要么是代码冲突,要么是APK包体积增大&#... 查看详情

android多个module统一配置相同jar或库的版本号

AndroidStudio多个Module依赖相同的库时对版本号进行统一配置在Android项目中,一个项目经常会依赖其他的一个甚至多个库文件,在这种依赖的时候最常见的一个错误就是jar包版本不同引起jar包冲突,最常见的做法就是删掉其中一个... 查看详情

如何解决 npm 中不同版本的传递依赖?

】如何解决npm中不同版本的传递依赖?【英文标题】:Howtoresolvethetransitivedependenciesofdifferentversionsinnpm?【发布时间】:2021-11-1406:06:43【问题描述】:我的应用程序依赖于npm包ajv-keywords和@apideck/better-ajv-errors,它们又依赖于包ajv,... 查看详情

miniconda3介绍安装使用教程(代码片段)

...python环境,防止python环境不对应导致代码运行出错。对于pip、conda、anaconda和miniconda的区别。conda是一个包和环境管理工具,它不仅能管理包,还能隔离和管理不同python版本的环境。类似管理nodejs环境的nvm工具。anaconda... 查看详情

mac-如何在mac上安装多个版本openjdk并有效管理

...在日常项目开发过程中,由于公司多个Java项目使用的JDK版本不一致或其他原因,经常需要切换使用不同的JDK版本;在Windows或Linux上,常用的方法可能是通过环境变量来控制,但是在Mac平台上,我尝试了采用同样环境变量控制的... 查看详情

如何对支持不同依赖版本的多个发布分支进行版本控制?

】如何对支持不同依赖版本的多个发布分支进行版本控制?【英文标题】:HowcanIversionmultiplereleasebranchessupportingdifferentdepedencyversions?【发布时间】:2020-12-3118:01:09【问题描述】:我的组织有一个图书馆,它依赖于4个不同的东西:... 查看详情