转译时,Babel 正在检查目标模块的 package.json 以进行配置
Babel is examining the package.json of a target module for configuration when transpiling
我有一个问题,我想转换我正在使用的包的 ...spread 运算符。
请注意,在脚本版本 1.1.5 中弹出的 create-react-app 上下文中,我使用的是 babel 6。我有一个最小的复制品。
我现在找不到它,但我正在使用一些 babel 文档建议的技术,我将其添加到我的 webpack 配置中:
{
test: /\.m?js$/,
exclude: {
test: /(node_modules)/, // Exclude libraries in node_modules ...
not: [
/@monaco-editor\/react/
]
},
use: {
loader: require.resolve('babel-loader'),
options: {
"plugins": [
[require.resolve("babel-plugin-transform-object-rest-spread"), { "useBuiltIns": true }]]
}
}
},
基本上是说“不要在 node_modules 中转译任何东西,除了那个包,并使用这个插件转译它”。
当你 运行 这个问题时,你得到这个错误:
./node_modules/@monaco-editor/react/lib/es/index.js
Module build failed: Error: Couldn't find preset "@babel/preset-env" relative to directory "/Users/djohnston/git/cra1/node_modules/@monaco-editor/react"
at Array.map (<anonymous>)
请注意,它抱怨的 babel 预设是 babel 7 @babel/preset-env 预设,而我使用的是 babel 6.
但是 - 如果您导航到 node_modules/@monaco-editor/react/package.json 并从中删除以下 babel 属性:
"babel": {
"presets": [
"@babel/preset-env",
"@babel/preset-react"
]
},
然后代码开始工作。
这对我来说意味着 babel 正在检查 package.json 并决定开始使用 @babel/preset-env 来开始转译它,而不是只使用我在我的 webpack 配置中指定的配置.
为什么 babel 这样做,有没有我可以用来解决这个问题的配置选项?
此问题的最低重现数:https://github.com/dwjohnston/cra1-monaco/tree/eject-solve-attempt
@monaco-editor/react 上的问题我已经提出了这个问题(要求他们转换传播运算符:https://github.com/suren-atoyan/monaco-react/issues/221)
Babel 6 在读取配置文件方面非常积极,这正是您 运行 的原因。 Babel 7 更改了其配置文件读取行为以避免这些问题。
在这种情况下,您唯一的选择是通过在其选项中将 babelrc: false
传递给 babel-loader
来明确告诉 Babel 6 跳过 .babelrc
/package.json
处理。
我有一个问题,我想转换我正在使用的包的 ...spread 运算符。
请注意,在脚本版本 1.1.5 中弹出的 create-react-app 上下文中,我使用的是 babel 6。我有一个最小的复制品。
我现在找不到它,但我正在使用一些 babel 文档建议的技术,我将其添加到我的 webpack 配置中:
{
test: /\.m?js$/,
exclude: {
test: /(node_modules)/, // Exclude libraries in node_modules ...
not: [
/@monaco-editor\/react/
]
},
use: {
loader: require.resolve('babel-loader'),
options: {
"plugins": [
[require.resolve("babel-plugin-transform-object-rest-spread"), { "useBuiltIns": true }]]
}
}
},
基本上是说“不要在 node_modules 中转译任何东西,除了那个包,并使用这个插件转译它”。
当你 运行 这个问题时,你得到这个错误:
./node_modules/@monaco-editor/react/lib/es/index.js
Module build failed: Error: Couldn't find preset "@babel/preset-env" relative to directory "/Users/djohnston/git/cra1/node_modules/@monaco-editor/react"
at Array.map (<anonymous>)
请注意,它抱怨的 babel 预设是 babel 7 @babel/preset-env 预设,而我使用的是 babel 6.
但是 - 如果您导航到 node_modules/@monaco-editor/react/package.json 并从中删除以下 babel 属性:
"babel": {
"presets": [
"@babel/preset-env",
"@babel/preset-react"
]
},
然后代码开始工作。
这对我来说意味着 babel 正在检查 package.json 并决定开始使用 @babel/preset-env 来开始转译它,而不是只使用我在我的 webpack 配置中指定的配置.
为什么 babel 这样做,有没有我可以用来解决这个问题的配置选项?
此问题的最低重现数:https://github.com/dwjohnston/cra1-monaco/tree/eject-solve-attempt
@monaco-editor/react 上的问题我已经提出了这个问题(要求他们转换传播运算符:https://github.com/suren-atoyan/monaco-react/issues/221)
Babel 6 在读取配置文件方面非常积极,这正是您 运行 的原因。 Babel 7 更改了其配置文件读取行为以避免这些问题。
在这种情况下,您唯一的选择是通过在其选项中将 babelrc: false
传递给 babel-loader
来明确告诉 Babel 6 跳过 .babelrc
/package.json
处理。