Babel核心的“转换”功能找不到插件。

4
我有一个全局的节点模块,使用babel-core的transform函数。 我的模块根目录下没有 .babelrc 文件。 它接受一个文件,并基本上只使用 transform 来“编译”它。
const result = transformSync(content, {
    filename: src,
});

在所说的文件中有一个 .babelrc 文件,我确实能够找到它。

{
  "presets": ["@babel/preset-env"]
}

但是它抱怨找不到“@babel/preset-env”,这是正确的,因为该模块已安装在我的文件中,而不是被转译的文件/.babelrc中。

我已经尝试了许多在https://babeljs.io/docs/en/options中的选项,但仍无法使其工作。

我应该如何配置transform,以便在从转译文件夹加载babel配置的同时从我的模块获取插件?

1个回答

1
按照设计,Babel的插件加载器会相对于引用它们的配置文件搜索插件,或者使用transformSync选项中直接传递的插件的cwd。这一点不会暴露给调用Babel的实用程序进行控制。
改变这些语义意味着Babel配置文件的行为将因加载它的工具而异,这对用户来说非常不一致,特别是考虑到配置文件格式的主要好处之一是使配置可以轻松在调用Babel的多个工具之间共享,例如测试和打包工具。
如果您希望用户能够自定义您的工具,那么您实际上可能需要为您的工具创建自己完全独立的配置文件,以便您可以定义任何您想要的语义。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接