失敗するプラグインは @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",
何か案は?
これは基本的に、プラグイン@babel/plugin-transform-regenerator
を2回(ほぼ間接的に)定義したというバベルエラーです。
Parcel Bundlerは、コードをトランスパイルします デフォルト Babelプリセット@babel/preset-env
。これらのプリセットは一般的に、プラグインの共有可能なリストにすぎません。 here を見るとわかるように、preset-env
には既にBabel 7の"@babel/plugin-transform-regenerator"
が含まれています。
簡単な解決策:"@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
(サプライズ、サプライズ)と呼ばれる素晴らしいアップグレードツールを提供します。これはプラグインの名前を変更するのに十分な仕事をしましたが、残念ながらこれらの "重複"を残しました。
希望、それが役立ちます。
いくつかの調査を行った後、言及されたエラーの最も可能性の高い原因は、このプラグインによって内部的にも使用される1つ以上のデフォルトプラグインがあることです。
問題を解決する最も簡単な方法は、エラーが示す内容を実行することです。プラグインに一意の名前を追加します。
"plugins": ["@babel/plugin-transform-regenerator", {}, 'unique-name']