В Babel 7 происходит сбой с одним плагином, который говорит: «Обнаружен дубликат плагина / пресета». - PullRequest
0 голосов
/ 14 октября 2018

Плагин, который выходит из строя: @babel/plugin-transform-regenerator (без дополнительного плагина, 1,6 миллиона загрузок в неделю).

Это весь мой .babelrc:

{
  "presets": [],
  "plugins": [
    "@babel/plugin-transform-regenerator"
  ]
}

Когда я пытаюсь передать его посылкой, используя parcel build source/main/index.html --no-source-maps --out-dir build, я получаю следующую ошибку:

/path/to/index.js: Duplicate plugin/preset detected.
If you'd like to use two separate instances of a plugin,
they need separate names, e.g.

plugins: [
  ['some-plugin', {}],
  ['some-plugin', {}, 'some unique name'],
]

at assertNoDuplicates (/.../node_modules/@babel/core/lib/config/config-descriptors.js:205:13)
at createDescriptors (/.../node_modules/@babel/core/lib/config/config-descriptors.js:114:3)
at createPluginDescriptors (/.../node_modules/@babel/core/lib/config/config-descriptors.js:105:10)
at alias (/.../node_modules/@babel/core/lib/config/config-descriptors.js:63:49)
at cachedFunction (/.../node_modules/@babel/core/lib/config/caching.js:33:19)
at plugins.plugins (/.../node_modules/@babel/core/lib/config/config-descriptors.js:28:77)
at mergeChainOpts (/.../node_modules/@babel/core/lib/config/config-chain.js:314:26)
at /.../node_modules/@babel/core/lib/config/config-chain.js:278:7
at buildRootChain (/.../node_modules/@babel/core/lib/config/config-chain.js:68:29)
at loadPrivatePartialConfig (/.../node_modules/@babel/core/lib/config/partial.js:85:55)

Вот мои версии из package.json:

"@babel/core": "^7.1.2",
"@babel/plugin-transform-regenerator": "^7.0.0",

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Это вавилонская ошибка, в основном говоря, что вы определили свой плагин @babel/plugin-transform-regenerator дважды - более или менее косвенно.

Parcel Bundler передает ваш код по умолчанию с предустановкой Babel @babel/preset-env.Эти предустановки в общем являются просто общим списком плагинов.Как вы можете видеть здесь , preset-env уже включает "@babel/plugin-transform-regenerator" в Babel 7.

Простое решение: просто удалите "@babel/plugin-transform-regenerator" из конфигурации ваших плагинов в .babelrc.

PS: после переноса с версии 6 на 7 был похожий опыт. Мой старый конфиг выглядел так (действителен в Babel 6)

  "plugins": [
    "react-hot-loader/babel", 
    "transform-object-rest-spread", 
    "transform-class-properties", 
    "transform-runtime",
    "transform-async-generator-functions",
    "transform-async-to-generator"
  ],
  "presets": ["env", "react"]

Мне пришлось удалить плагины transform-object-rest-spread, transform-async-generator-functions и transform-async-to-generator, которые, как было сказано, включены в env (здесь явно указано).

Babel предлагает фантастический инструмент обновления под названием babel-upgrade (сюрприз, сюрприз), который действительно получил работусделано хорошо, чтобы переименовать плагины, но, к сожалению, это оставило меня одного с этими «дубликатами».

Надеюсь, это поможет.

0 голосов
/ 16 октября 2018

После некоторых исследований наиболее вероятной причиной упомянутой ошибки является то, что у вас есть один или несколько плагинов по умолчанию, которые также используются внутри этого плагина.

Самый простой способ решить эту проблему - это сделатьЧто говорит вам ошибка: Добавьте уникальное имя для плагина:

"plugins": ["@babel/plugin-transform-regenerator", {}, 'unique-name']

...