【发布时间】:2020-06-12 16:58:08
【问题描述】:
我正在编写一个内部工具,它比较项目中安装的版本,只允许通过某些版本。为此,我必须检查在 yarn.lock 文件中解析的版本,因为 package.json 文件有一个 semver 范围,而不是特定版本,并且它不会告诉你依赖项的依赖关系。
我尝试使用yarn list 命令,但它也会打印 semver 范围并且很难解析(即使使用--json 选项)。
所以yarn.lock 似乎是唯一的方法。我知道yarn.lock 可能有同一个包的不同版本,在这种情况下,我只想要安装在其中的版本。node_nodules(必须只是其中之一)。我不知道如何解析锁定文件。
我能想到的另一种方法实际上是进入node_modules 文件夹并检查包的package.json 中的版本。
以上选项对我来说都不干净。有什么方法可以让我尽可能轻松、干净地知道特定包的已解决版本(前提是我知道包的名称并且知道它已安装)?
更新:
我实际上想要已安装包的所有版本(即使它们在依赖关系树中非常深)。
【问题讨论】:
-
不太确定是否有帮助,但因为您知道包的名称。
npm info [package_name] version可以帮助检索软件包版本。 -
@VaritJPatel 它不返回已安装的软件包版本。它只是从 npm 注册表中获取信息
-
可能最好的方法是使用
require.resolve查找实际将要包含的节点模块的位置,然后读取package.json。 nodejs.org/api/… -
这不可能/不容易。
标签: javascript node.js typescript yarnpkg