Le plugin qui échoue est @babel/plugin-transform-regenerator
(pas de plugin marginal, 1,6 million de téléchargements/semaine).
C'est tout mon .babelrc
:
{
"presets": [],
"plugins": [
"@babel/plugin-transform-regenerator"
]
}
Lorsque j'essaie de le transpiler avec colis en utilisant parcel build source/main/index.html --no-source-maps --out-dir build
, j'obtiens le message d'erreur suivant:
/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)
Voici mes versions de package.json:
"@babel/core": "^7.1.2",
"@babel/plugin-transform-regenerator": "^7.0.0",
Des idées?
Il s’agit d’une erreur babel qui indique en gros que vous avez défini votre plugin @babel/plugin-transform-regenerator
deux fois - plus ou moins indirectement.
Parcel Bundler transpile votre code par défaut avec le préréglage Babel @babel/preset-env
. Ces presets en général ne sont que des listes de plugins partageables. Comme vous pouvez le voir ici , preset-env
inclut déjà "@babel/plugin-transform-regenerator"
dans Babel 7.
Solution simple: supprimez simplement "@babel/plugin-transform-regenerator"
de la configuration de vos plugins dans .babelrc
.
PS: j'ai vécu une expérience similaire après avoir migré de la version 6 à la version 7. Mon ancienne configuration ressemblait à ceci (valable dans 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"]
J'ai dû supprimer les plugins transform-object-rest-spread
, transform-async-generator-functions
et transform-async-to-generator
, qui - comme dit - sont inclus dans env
(ici explicitement spécifié).
Babel propose un outil de mise à niveau fantastique appelé babel-upgrade
(surprise, surprise), qui a bien fait le travail pour renommer les plugins, mais malheureusement, il m’a laissé seul avec ces "doublons".
J'espère que cela pourra aider.
Après quelques recherches, la cause la plus probable de l’erreur mentionnée est qu’un ou plusieurs plug-ins par défaut sont également utilisés en interne par ce plug-in.
Le moyen le plus simple de résoudre le problème consiste à procéder comme indiqué par l'erreur: Ajoutez un nom unique au plug-in:
"plugins": ["@babel/plugin-transform-regenerator", {}, 'unique-name']