如何检查本地 JavaScript 包是不是为 Semver?

Posted

技术标签:

【中文标题】如何检查本地 JavaScript 包是不是为 Semver?【英文标题】:How to check if local JavaScript packages are Semver?如何检查本地 JavaScript 包是否为 Semver? 【发布时间】:2020-01-30 20:14:42 【问题描述】:

在我的项目中,以前的开发者已经把各种JS包放在本地,例如chart.jsjquery.block-ui.jsmodernizr.jsaxios.jsvue.js等。我正在尝试使用它们来管理它们新PM。问题是,它们都是旧版本。

Q1:我如何知道它们是否是Semver,所以将它们升级到最新的次要版本是否安全?我对每个包都进行了研究,但是查看每个包很麻烦,其中一些包的信息很少。是否有地方说明所有Semvered JS 包?

Q2:对于jquery.block-ui.js,它被缩小了,在文件中,没有版本号的信息,这种情况下,如果可以安全升级,是否可以找出它是什么版本?

【问题讨论】:

你永远不会知道。这就是为什么你必须编写测试。除此之外,即使一个包是 semver.. 我经历了很多包,其中在补丁版本更改中引入了重大更改。 但 GottZ 更直言不讳地说:升级软件包从不“安全”。曾经。它经常是必要的,但绝不是安全的。你必须一次只做一个,看看有什么问题。首先用 node_modules 中 npm 的最新版本替换本地文件之一。运行测试,检查视觉效果。重复。糟透了,但吃掉技术债务的唯一方法就是开始咀嚼并继续前进。 【参考方案1】:

(注意:我会为未来有明智前辈并正在寻求帮助的人保留这个答案。如果我想到一些可以帮助以前的开发人员手动复制到他们的文件中的人,我会再次编辑)

首先,使用npm outdated。这将检查任何过时的软件包。治愈健康无益。

其次,正如评论所说的关于 semvered 包,你永远不知道。也就是说,我找到了一个半有用的资源here,它是一个正则表达式,它返回匹配的版本号。

第三,关于 JQuery,npm outdated 应该返回一个说明版本号的表。另请参阅this 问题,了解其他可能的查找 JQuery 版本号的方法。

这是他们为npm outdated 提供的示例输出:

Package      Current   Wanted   Latest  Location
glob          5.0.15   5.0.15    6.0.1  test-outdated-output
nothingness    0.0.3      git      git  test-outdated-output
npm            3.5.1    3.5.2    3.5.1  test-outdated-output
local-dev      0.0.3   linked   linked  test-outdated-output
once           1.3.2    1.3.3    1.3.3  test-outdated-output

我希望这会有所帮助。它可能不会。就像 cmets 说的那样,你永远无法确定,所以最可靠的方法是一次检查一个,看看有什么问题

【讨论】:

@JaredSmith 是对的,以前的开发者把文件放在项目中,所以包管理器在我调查之前从未使用过。 我很抱歉 OP 误解了前一个开发者留下的真正恐怖......我正在尽力想一个解决方案

以上是关于如何检查本地 JavaScript 包是不是为 Semver?的主要内容,如果未能解决你的问题,请参考以下文章

检查对象是不是是Javascript中的字符串

如何从 C# 或 Javascript 检查文件是不是存在?

如何将用户的本地时间转换为多伦多时区,然后在 Javascript 中根据多伦多时间检查 dst?

如何检查 JavaScript 对象是不是为 DOM 对象?

如何检查对象内的数组是不是为空 JavaScript

如何在 JavaScript 中检查变量是不是为 blob