javascript - 如何从 yarn.lock 知道当前安装包的版本

标签 javascript node.js typescript yarnpkg

我正在编写一个内部工具,它比较项目中安装的版本,只允许通过某些版本。为此,我必须检查 yarn.lock 中解决的版本。文件,因为 package.json 文件有一个 semver 范围,而不是特定版本,它不会告诉你依赖项的依赖关系。

我尝试使用 yarn list命令,但它也打印 semver 范围并且很难解析(即使使用 --json 选项)。
所以yarn.lock似乎是唯一的方法。我知道yarn.lock可能有同一个包的不同版本,在这种情况下,我只想要安装的版本。node_nodules (必须只是其中之一)。我不知道如何解析锁定文件。

我能想到的另一种方法实际上是进入 node_modules文件夹并检查 package.json 中的版本的包。

以上选项对我来说都不干净。有什么方法可以让我尽可能轻松、干净地知道特定包的已解决版本(前提是我知道包的名称并且知道它已安装)?

更新 :
我实际上想要已安装包的所有版本(即使它们在依赖关系树中很深)。

最佳答案

由于您知道包的名称,请执行以下操作:

yarn list --pattern <package_name>
上面的命令将为您提供任何深度的软件包的所有已安装版本。例如,我有不同版本的 camelcase图书馆安装在不同的深度。运行命令:yarn list --pattern "camelcase" ,这是输出:
yarn list v1.22.5
├─ camelcase@6.2.0
└─ yargs-parser@13.1.2
   └─ camelcase@5.3.1

关于javascript - 如何从 yarn.lock 知道当前安装包的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60454251/

相关文章:

javascript - 使用 Multer 将图像保存在 MongoDB 后端作为来自 Angular 的文件,它无法正常工作

reactjs - 在 Enzyme 中测试 input.focus()

javascript - javascript中switch case跳转到错误的case(如何正确使用break命令)

javascript - 为谷歌地图 v3 JS Latlng 对象转换 DATUM WGS84 坐标

node.js - 如何使用自定义错误响应在 azure 函数 http 触发器中触发故障

javascript - 将 'object' 的属性复制到新变量

typescript - 引用路径不使用导入捕获接口(interface) - IntelliJ

javascript - 单击按钮时如何打开到同一选项卡的链接?

javascript - #!链接中的主题标签和感叹号作为文件夹?

Node.js:如何从内存中释放 Mongoose 模型? (内存泄漏)