我如何从其他地方访问项目的 babel 相关部门?

How can I access a project's babel-related deps from somewhere else?

这是一个奇怪的需求,但我不认为这是一个 X/Y 问题。我需要从我自己的工具访问项目的 babel 相关依赖项和配置。我的工具可能是一个 devDep,或者全局安装,或者 运行 with npx;我无从得知。

我知道这可以用 babel-register 来完成,因为像 babel-tape-runner 这样的好工具做得很好。但是,就我而言,我不能只 require('babel-register') 然后需要其他文件;我在后台使用 module._compile。 (写出一个临时文件,运行打开它,然后取消链接在这种情况下并不是一个好的选择,因为它可能发生数百或数千次。)

在将这些东西传递给 module._compile 之前,有什么方法可以使用用户项目的本地 Babel 配置、预设和插件对我从某处读取的某些代码进行 babel 化处理吗?

事实证明这里的正确答案是不使用 babel-register。我快速浏览了一下 Jest 是如何做到的,他们直接使用 babel-core。将 babel.transform(code, { extends: babelRc }).code 传递给 module._compile 效果很好。整个 diff 可用 here.