Babel изучает package.json целевого модуля на предмет конфигурации при переносе
У меня проблема, когда я хочу перенести оператор ... распространения пакета, который я использую.
Обратите внимание, что я использую babel 6 в контексте извлеченного приложения create-response-app в версии скриптов 1.1.5. У меня для этого есть минимальное воспроизведение.
Я не могу найти его сейчас, но я использую технику, предложенную в какой-то документации babel, где я добавляю это в свою конфигурацию веб-пакета:
{
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 / response, которую я поднял по поводу этой проблемы (с просьбой перенести оператор распространения: https://github.com/suren-atoyan/monaco-react/issues/221)
1 ответ
Babel 6 очень агрессивно относился к чтению файлов конфигурации, что было проблемой именно по причинам, с которыми вы столкнулись. Babel 7 изменил режим чтения файла конфигурации, чтобы избежать этих проблем.
Единственный вариант в этом случае - явно указать Babel 6 пропустить
.babelrc
/
package.json
обработка путем передачи
babelrc: false
к
babel-loader
в его опциях.