Babel:根程序选项

时间:2018-10-23 20:38:43

标签: babel monorepo

我似乎绝对不知道要为babel放置根程序选项。

如果我有一个monorepo,并且需要告诉不同的子程序包它们将向上看我的babel.config.js,那么我应该将rootMode: "upwards"放入子程序包的.babelrc中,对吗?由于产生的错误,这不起作用

Error: .rootMode is only allowed in root programmatic options

以某种方式,我根本找不到在哪里放置/使用根程序选项的任何示例……有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:0)

我在使用我的(可能是非标准的)monorepo 设置时遇到了这个错误,我的每个包都有顶级子目录。没有顶级包。当我升级到 Babel 7 时,我的 Jest 测试不再将 yarn linked 的包转换为我运行 Jest 的包。

我添加了顶级 babel.config.js 作为 Babel's monorepo instructions 的一部分。我在这三个地方有 rootMode: "upwards"

  • 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 文件。

从最后一个删除它消除了错误。

答案 1 :(得分:-2)

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

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

否则我遇到的问题与您相同,我无法使用键babel将其放在package.json文件中。