如何确定旧 npm 包版本的依赖关系

Eli*_*jah 6 upgrade npm package.json npm-scripts

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

除了下载包并检查 package.json 文件之外,是否有一些我不知道的关于如何确定包具有哪个依赖项版本的信息?

我觉得我浪费了几个小时去做一些我本以为更容易做的事情。

Rob*_*obC 9

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

是的,这是正确的,只会www.npmjs.com显示最新版本的包的依赖关系。

这里有几种方法可以以编程方式和非编程方式发现您想要的内容。

以编程方式:

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

    npm view <pkg_name> versions --json
    
    Run Code Online (Sandbox Code Playgroud)

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

    注意:以上部分<pkg_name>请替换为真实的包名。

    例如; 假设eslint包运行以下命令:

    npm view eslint versions --json
    
    Run Code Online (Sandbox Code Playgroud)

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

    [
      "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",
      ...
    ]
    
    Run Code Online (Sandbox Code Playgroud)
  2. 现在我们知道有哪些版本可用,假设我们想要列出版本的依赖项,我们可以运行以下命令:eslint0.1.2

    npm show eslint@0.1.2 dependencies --json
    
    Run Code Online (Sandbox Code Playgroud)

    这将打印:

    {
      "optimist": "*",
      "estraverse": "~1.3.0",
      "esprima": "*",
      "escope": "1.0.0"
    }
    
    Run Code Online (Sandbox Code Playgroud)

    同样,我们可以通过运行以下命令来发现版本的devDependency :eslint0.1.2

    npm show eslint@0.1.2 devDependencies --json
    
    Run Code Online (Sandbox Code Playgroud)

    这将产生如下结果:

    {
      "vows": "~0.7.0",
      "sinon": "*",
      "commonjs-everywhere": "~0.9.0",
      "mocha": "~1.13.0",
      "chai": "~1.8.1",
      "grunt": "~0.4.1",
      ...
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 如果您事先知道某个包具有特定的依赖关系。

    例如; 回顾运行上述命令后,我们现在知道该eslint版本0.1.2escope列为依赖项。

    因此,如果我们想知道escopeeslint版本0.1.2需要的版本,我们可以运行以下命令:

    npm show eslint@0.1.2 dependencies.escope
                                      ^
    
    Run Code Online (Sandbox Code Playgroud)

    注:包名后面带点(.),即.escope

    这将打印以下内容:

    1.0.0


非程序化方式

当您有可用的 CLI 工具时,我想不出为什么您想要执行以下非编程方式而不是前面提到的编程方式。但是,如果您更喜欢手动任务,那么这里...

注意:YMMV 使用以下手动步骤,因为这取决于包的管理/维护方式。

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

为此,我们将演示该eslint包:

  1. 访问npmjs.com并在“搜索包”输入字段中输入包的名称。我们将输入eslint并按回车键。

  2. 接下来单击eslint软件包列表,您将进入此页面

  3. 单击github链接,该链接通常出现在网页右侧,如下所示:

    github 代表链接图标

  4. 这将带你到仓库eslint,即这个

  5. 在 Github 页面上,单击“分支”按钮 - 该按钮显示在源代码文件列表上方,如下所示:

    Github 分支按钮

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

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

  7. 从文件列表中找到package.json文件并单击它。这将在浏览器中加载package.json的内容 ,您可以在其中读取它并确定其依赖项。


可视化依赖树

我有时会使用这个在线工具https://npm.anvaka.com它可以帮助您可视化给定包的完整依赖关系树/图 - 但它仅适用于包的最新版本。

是最新版本 eslint 的完整依赖关系树/图(多层深度)。

  • 我不断回到这个页面。很好的答案。 (2认同)