通过 Lerna API 强制获取"lerna list"输出



我想在节点脚本中获取lerna list --json CLI 功能以进行各种发布调整。我正在浏览代码库,但找不到合适的 API 来完成正确的工作:

例:

// process-monorepo-packages.js
const {listApi} = require('@lerna/some-package')
const packagesMetadata = listApi({json:true})
// TODO process packagesMetadata
function processPackages(){ /* ... */ }

我已经尝试过@lerna/list但在那里没有任何运气。

解决方法是使用 child_process 模块生成 shell 并在该 shell 中运行命令,然后从返回的内容中查询所有包的名称。

const {execSync} = require('child_process');
let output
try {
  output = execSync(`npx lerna ls --json`)
} catch (error) {
  console.info(`No local packages found.`)
  process.exit(0)
}
const packages = JSON.parse(output.toString()); // this will contain the list of the packages

最新更新