在多个npm项目中升级依赖项的便捷方法是什么?

时间:2017-06-07 07:00:07

标签: reactjs npm open-source

对于开源库作者,特别是与React相关的,他们通常会编写和发布多个React组件。但是,当React发布新版本(例如v16)时,将每个组件升级到最新的React版本会很麻烦。

在所有这些软件包中升级React依赖项的方便方法是什么?考虑到稳定性?我不想手动进入每个项目并运行npm update因为这将需要很长时间。我考虑过编写一个脚本来为我做,但是我想知道是否有任何工具可以做同样甚至更好的工作,并立即升级所有项目中的包?

这个问题并不是特定于React,它可以应用于Angular,Vue等,或其他常用的npm库。

2 个答案:

答案 0 :(得分:2)

更新依赖项的最简单方法:

npm update

它只会更新package.json中的基于范围的内容,例如。从1.0.0到1.9.0,但不是2.0.0。见semantic versioning。在package.json中设置自动主要版本升级并不是一个好主意,所以通常npm update会忽略主要版本。

如果要升级主要版本的依赖关系,则会更加棘手。 lib很可能会发生重大变化,你需要升级你的代码

此库 npm-check-updates 可以帮助您更新到最新版本。

 npm install -g npm-check-updates
 ncu // Shows new dependencies
 ncu -u // Will do upgrade in package.json

该库将搜索最新的包,甚至会更新。

特别是对于React,如果您不需要自定义webpack构建,则可以使用CLI。 React-create-app将创建具有React,ReactDOM,Jest,Webpack等隐藏依赖项的应用程序。当您想要升级时,它就像更新整个React& Webpack堆栈的一个依赖项一样简单。

npm install -g create-react-app
create-react-app my-app
cd my-app/
npm start

如果您正在构建类似的应用程序(但不能使用ReactCLI),您可以构建自己的webpack配置,该配置可能会在您的所有应用程序中重用,它将涵盖构建过程。这可能会隐藏构建依赖关系,例如WebpackReactRouter等。

更新:是否可以快速无缝地升级多个项目?例如。用简单的脚本。

这可能非常复杂甚至不可能。您需要在所有项目中具有完全相同的依赖项...因为您可能具有不同库的一些不兼容版本。可能最好的方法是创建像react-cli这样的公共库堆栈,然后将此堆栈用作单个依赖项。但是,在升级“堆栈”依赖项后,您仍然需要单独升级和测试每个项目 - 通常,由于API更改,您还需要升级代码库。制作更新脚本可能非常复杂,可能不值得。

答案 1 :(得分:1)

如果您使用的是gitlab,github,自托管gitlab和其他相关的源代码管理,则可以查看我的答案What is the best way to authomatically update project dependecnies

长话短说,您可以使用翻新,这是一个很好的工具,可以跨maven,npm,gradle,pip和其他软件包管理器更新不同软件包管理器的依赖关系。它可以一次更新多个项目的依赖关系,还有其他好处。实际上,只要有新的更新可用于那些依赖项,它就会自动使用这些更新创建合并请求。 尽管它可以在CI / CD之外使用,但是如果您具有创建这些合并请求的CI / CD,它可以运行您的管道并确保在更新后一切正常。