我正在研究一个monorepo,其中包含几个使用gulp和webpack和babel(通过babel-loader)构建的软件包。
目前,我很难让babel确认我在monorepo的根目录中拥有的主.babelrc
配置文件。
我认为问题是由于gulp将CWD更改为软件包本身的,因为它包含gulpfile
。例如:
$ npx gulp -f packages/servers/gateway/gulpfile.js dev
[17:36:20] Working directory changed to ~/prj/demo/packages/servers/gateway
以上内容会产生错误,例如:
Error: Module build failed (from ~/prj/demo/node_modules/babel-loader/lib/index.js):
SyntaxError: ~/prj/demo/packages/servers/gateway/src/main.js: Unexpected token, expected "{" (11:21)
9 | import * as lc from "libcommon";
10 |
> 11 | async function main(): Promise<void> {
当我将.babelrc文件移动到程序包的目录中时,编译成功并且构建工件正确运行。同样,如果我直接在webpack babel-loader规则中指定预设和插件设置,那就很好了。
作为参考,这是我正在使用的.babelrc文件:
{
"presets": [
"@babel/env",
],
"plugins": [
"@babel/plugin-transform-flow-strip-types",
"@babel/plugin-proposal-export-default-from",
"@babel/plugin-proposal-export-namespace-from",
"@babel/plugin-proposal-object-rest-spread",
"@babel/plugin-proposal-class-properties",
"@babel/plugin-transform-regenerator",
"@babel/plugin-transform-runtime",
]
}
我如何使babel始终在.remote的根目录中查找.babelrc文件,而不管其看到的CWD是什么?