是否存在函数可获取含间接依赖的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
相关产品推荐
相关产品推荐

