Babel:根编程选项

ejk8hzay  于 2022-12-08  发布在  Babel
关注(0)|答案(3)|浏览(165)

我似乎完全不知道该把巴别塔的根程序选项放在哪里。
如果我有一个monorepo,需要告诉不同的子包,他们应该向上查找我的babel.config.js,那么我应该把rootMode: "upwards"放到子包的.babelrc中,对吗?这是行不通的,因为会产生错误
Error: .rootMode is only allowed in root programmatic options
不知何故,我就是找不到任何例子,在哪里放置/使用根编程选项...有人能给我指出正确的方向吗?

uxhixvfz

uxhixvfz1#

如果您正在使用Webpack,则需要将其放在那里。

module: {
  [..]
  rules: [
    // Transpile ES6 Javascript into ES5 with babel loader
    {
      test: /\.jsx?$/,
      exclude: [/node_modules/, /json/],
      loader: 'babel-loader',
      options: {
        rootMode: 'upward'
      },
    },
    [..]
  ],
  [..]
},

否则我有同样的问题比你,我不能把它在package.json文件中使用的关键字babel .

eyh26e7m

eyh26e7m2#

任何与API相关的选项都被称为编程选项。https://github.com/babel/babel/discussions/14405
当你直接将它们指定给Babel(babel.transformSync(code,programmaticOptions))或你正在使用的Babel集成(例如babel-loader,它可以将它们传递给它内部的babel.transform调用)。换句话说,不是在预置或配置文件中。[...]
由Nicolo-Ribaudo - Babel核心团队负责。

suzh9iv8

suzh9iv83#

我在使用我的(可能是非标准的)monorepo设置时遇到了这个错误,我的每个包都有一个顶级子目录。没有顶级包。当我升级到Babel 7时,我的Jest测试不再转换那些yarn link的包到我运行Jest的包中。
我在Babel的monorepo指令中添加了一个顶级的babel.config.js

  • ui-package/webpack.config.js用于转换应用程序。
  • ui-package/babel-jest.js,显示为:
module.exports = require("babel-jest").createTransformer({
  rootMode: "upward",
})

并且引用自相同目录中的jest.config.js,如:

transform: {
  "^.+\\.jsx?$": "./babel-jest.js",
},
  • /babel.config.js中,新添加的顶级babel conf文件。

将其从最后一个中删除可删 debugging 误。

相关问题