NPM有关确定与旧软件包版本的依赖关系的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NPM有关确定与旧软件包版本的依赖关系的问题相关的知识,希望对你有一定的参考价值。

在我看来,npm网站上的依赖关系链接仅适用于当前/最新版本。

除了下载并检查package.json文件之外,是否还有其他一些信息让我不知道如何确定软件包具有的依赖版本?

我觉得我在浪费HOURS做一些我希望做起来容易的事情。

答案

“在我看来,npm站点上的依赖关系链接仅适用于当前/最新版本。”

是的,www.npmjs.com显示软件包最新版本的依赖性。

这里有两种方法可以以编程方式和非编程方式找到您想要的东西。

编程:

  1. 使用以下语法使用npm view命令;

    npm view

    获得npm注册表中给定软件包可用的所有版本的列表。

    注意:上面的npm view <pkg_name> versions --json 部分应替换为真实的软件包名称。

    例如;让我们运行以下命令,例如<pkg_name>包:

    eslint

    将以下内容打印到控制台:

    npm view eslint versions --json
    
  2. 现在我们知道可用的版本,假设我们要列出[ "0.0.4", "0.0.5", "0.0.6", "0.0.7", "0.1.0-dev", "0.1.0", "0.1.1", "0.1.2", ... ] 版本eslintdependencies,我们可以运行以下命令:

    0.1.2

    这将打印:

    npm show eslint@0.1.2 dependencies --json
    

    类似地,我们可以通过运行以下命令来发现{ "optimist": "*", "estraverse": "~1.3.0", "esprima": "*", "escope": "1.0.0" } 版本eslintdevDependencies

    0.1.2

    这将产生如下内容:

    npm show eslint@0.1.2 devDependencies --json
    

编辑:非编程方式

我想不出为什么要使用CLI工具时,您希望执行以下非编程方式而不是上述编程方式的原因。但是,如果您更喜欢手动任务,那么这里......>

:YMMV使用以下手动步骤,这取决于如何管理/维护软件包。

通常,npm软件包的源代码将托管在GitHub上,因此您可以执行以下手动步骤。这将避免您必须下载软件包以检查package.json

文件。

为此,我们将为{ "vows": "~0.7.0", "sinon": "*", "commonjs-everywhere": "~0.9.0", "mocha": "~1.13.0", "chai": "~1.8.1", "grunt": "~0.4.1", ... } 包进行演示:

  1. 访问eslint,然后在“ Search Packages”]]输入字段中输入包的名称。我们将键入npmjs.com并按回车键。

  2. 下一步,从软件包列表中单击eslint,将您带到eslint

  3. 单击github

    链接,该链接通常显示在网页的右侧,看起来像这样:
  4. this page

  5. 将带您到github rep link icon回购,即eslint

  6. 在Github页面上,单击“ Branch”

    按钮-出现在源代码文件列表上方,看起来像这样:
  7. this one

  8. 在随后出现的pop-up

    面板中,单击“ Tags”
  9. 按钮,然后从要查找其依赖项的列表中找到并单击version标签。 (注意:这些标记名称通常对应于已发布/发布到npm的版本)

    然后,它将在浏览器中加载该特定发行版/版本的源代码文件。

  10. 从文件列表中找到package.json

    文件,然后单击它。这将在浏览器中加载package.json
  11. 的内容,您可以在其上阅读并确定其依赖性。

    可视化依赖树

    我有时会使用此在线工具Github branch button,该工具可以帮助您可视化给定软件包的完整依赖关系树/图形-但是它仅用于软件包的最新版本。

https://npm.anvaka.com是最新版本的eslint的完整依赖关系树/图形(许多层次,很深)。

以上是关于NPM有关确定与旧软件包版本的依赖关系的问题的主要内容,如果未能解决你的问题,请参考以下文章

Gradle 查看包的依赖关系

由于 ERESOLVE 无法解析依赖关系树,因此无法安装软件包 Pinia

npm:依赖关系vs devDependencies与捆绑的依赖关系

Linux RPM之软件升级

如何找到具有特定依赖关系的 NPM 模块版本 - 例如,哪个版本的 webpack-cli 与 webpack@4.46.0 一起使用?

确定npm将为给定版本范围选择的软件包版本