Babel:根编程选项
Babel: root programmatic options
我似乎完全不明白在哪里放置 babel 的根编程选项。
如果我有一个 monorepo 并且需要告诉不同的子包他们应该向上查找我的 babel.config.js 那么我应该将 rootMode: "upwards"
放入子包的 .babelrc 中,对吗?这不起作用,因为会产生错误
Error: .rootMode is only allowed in root programmatic options
不知何故,我根本找不到 put/use root 编程选项的任何示例...任何人都可以指出正确的方向吗?
如果你使用的是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 文件中
我在使用我的(可能是非标准的)monorepo 设置时遇到了这个错误,我的每个包都有顶级子目录。没有顶级包。当我升级到 Babel 7 时,我的 Jest 测试不再将 yarn link
ed 的包转换为我 运行 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文件。
将它从最后一个中删除消除了错误。
任何 API-related 选项都称为编程选项。看看我与 Babel 主要维护者的讨论:https://github.com/babel/babel/discussions/14405.
It's when you specify them directly to Babel (babel.transformSync(code, programmaticOptions) or to the Babel integration you are using (e.g. babel-loader, which can pass them to its internal babel.transform call). In other words, not in presets or config files. [...]
by @nicolo-ribaudo - Babel core team.
我似乎完全不明白在哪里放置 babel 的根编程选项。
如果我有一个 monorepo 并且需要告诉不同的子包他们应该向上查找我的 babel.config.js 那么我应该将 rootMode: "upwards"
放入子包的 .babelrc 中,对吗?这不起作用,因为会产生错误
Error: .rootMode is only allowed in root programmatic options
不知何故,我根本找不到 put/use root 编程选项的任何示例...任何人都可以指出正确的方向吗?
如果你使用的是Webpack,你需要把它放在那里。
module: {
[..]
rules: [
// Transpile ES6 Javascript into ES5 with babel loader
{
test: /\.jsx?$/,
exclude: [/node_modules/, /json/],
loader: 'babel-loader',
options: {
rootMode: 'upward'
},
},
[..]
],
[..]
},
否则我遇到了和你一样的问题,我无法使用密钥 babel
.
我在使用我的(可能是非标准的)monorepo 设置时遇到了这个错误,我的每个包都有顶级子目录。没有顶级包。当我升级到 Babel 7 时,我的 Jest 测试不再将 yarn link
ed 的包转换为我 运行 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文件。
将它从最后一个中删除消除了错误。
任何 API-related 选项都称为编程选项。看看我与 Babel 主要维护者的讨论:https://github.com/babel/babel/discussions/14405.
It's when you specify them directly to Babel (babel.transformSync(code, programmaticOptions) or to the Babel integration you are using (e.g. babel-loader, which can pass them to its internal babel.transform call). In other words, not in presets or config files. [...]
by @nicolo-ribaudo - Babel core team.