You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否存在函数可获取含间接依赖的NPM已安装依赖升序列表?

需求:按依赖升序遍历node_modules下含package.json的目录

我需要遍历文件系统中某个NPM包的node_modules目录下所有包含package.json的目录,但需按依赖升序(而非名称升序或无序)进行遍历。例如:

// 'y'依赖于'x',因此'x'在数组中排在前面
[
    'x',
    'y',
]

已尝试的方案及问题

  • 曾考虑通过同步调用子进程使用类似npm ll的命令,但存在以下问题:
    • 需要过滤文本,虽然可通过output.replace(/.../g, '')实现,但操作不便。
    • npm ll无法列出所有已安装包(例如间接依赖)。

核心疑问

是否存在某个函数可获取类似['foo-dependency', 'bar-dependency']的数组,包含直接与间接依赖且按依赖升序排列?

其他尝试的顾虑

我也考虑过读取package-lock.json,但不确定其中是否有按所需顺序排列的已安装依赖数组。虽然"node_modules/k"这类键可能按依赖顺序排列,但使用JSON.parse时键顺序不确定,因此不愿依赖该方式。


验证package-lock.json不可行的依据

有评论称package-lock.json的"packages"字段应按依赖升序排列,但实际并非如此:

  • 选取一个包含ts-node的package-lock.json样本,ts-node有非开发依赖v8-compile-cache-lib
  • 在该文件中分别搜索node_modules/ts-node和node_modules/v8-compile-cache-lib的行号
    可以看到v8-compile-cache-lib出现在ts-node之后,而它本应排在前面。因此读取package-lock.json并非可行方案。

内容的提问来源于stack exchange,提问作者Hydroper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 15:43:24