首页 > 解决方案 > 节点中是否有一种方法(某种 API)以编程方式调用本地 npm 发布,而不是通过生成

问题描述

我正在尝试从 npm 发布的本地包中获取文件列表。我得到的最好的解决方案是使用

npm publish --dry-run

通过child_processes.spawn(...)或相关方法。

但是,这不是很可靠,因为我需要解析不能保证在所有环境/未来版本中都保持不变的文本输出。

当然,我可以npm pack列出 tarball 的内容,但这超出了我的项目范围,例如我不想依赖能够写入文件系统。

那么,是否有一种“语义”方式来访问返回的数据npm publish

标签: node.jsnpm

解决方案


回答我自己的问题:

  1. 我遇到问题的具体情况是使用json我发布问题时不知道的选项解决的:

    npm pack --dry-run --json
    

    through child_processes.spawn,这至少会产生语义结果。

  2. 对于一般性问题,即是否可以npm直接调用函数,而不是通过生成,答案似乎是否定的。

    我尝试安装npm为库:

    npm install npm
    

    然后在javascript源代码中

    const Pack = require('npm').Pack;
    

    产生了启发性

    错误:npm v8.0.0 中删除了程序化 API


推荐阅读