stage-0系のpresetであるbabel-preset-stage-0をBabel6からBabel7に上げようとして次のエラーに遭遇した。
Removing Babel's Stage Presets
As of v7.0.0-beta.55, we've removed Babel's Stage presets.
Please consider reading our blog post on this decision at
https://babeljs.io/blog/2018/07/27/removing-babels-stage-presets
for more details. TL;DR is that it's more beneficial in the
long run to explicitly add which proposals to use.
For a more automatic migration, we have updated babel-upgrade,
https://github.com/babel/babel-upgrade to do this for you with
"npx babel-upgrade".
ざっくりというとコミュニティとか団体とか時代の変化とかでstage-0とかstage-1とかどの機能の範囲まで指しているかわからないよね、だからちゃんと機能別にプラグインで入れてねってことらしい。
以下、stage別にどのプラグインが対応しているかの対応表
{
"plugins": [
// Stage 0
"@babel/plugin-proposal-function-bind",
// Stage 1
"@babel/plugin-proposal-export-default-from",
"@babel/plugin-proposal-logical-assignment-operators",
["@babel/plugin-proposal-optional-chaining", { "loose": false }],
["@babel/plugin-proposal-pipeline-operator", { "proposal": "minimal" }],
["@babel/plugin-proposal-nullish-coalescing-operator", { "loose": false }],
"@babel/plugin-proposal-do-expressions",
// Stage 2
["@babel/plugin-proposal-decorators", { "legacy": true }],
"@babel/plugin-proposal-function-sent",
"@babel/plugin-proposal-export-namespace-from",
"@babel/plugin-proposal-numeric-separator",
"@babel/plugin-proposal-throw-expressions",
// Stage 3
"@babel/plugin-syntax-dynamic-import",
"@babel/plugin-syntax-import-meta",
["@babel/plugin-proposal-class-properties", { "loose": false }],
"@babel/plugin-proposal-json-strings"
]
}
ちなみに以下Babel6→Babel7にあげたときの対応表
各種presetとpluginsがbabel本体のリポジトリに取り込まれている
・"babel-core": "^6.26.0" → "@babel/core": "^7.1.0"
・"babel-loader": "^7.1.2" → "babel-loader": "^8.0.2"
・"babel-plugin-transform-decorators-legacy": "^1.3.4" → "@babel/plugin-proposal-decorators": "^7.1.0",
・"babel-plugin-transform-react-jsx": "^6.24.1" → "@babel/plugin-transform-react-jsx": "^7.0.0"
・"babel-polyfill": "^6.26.0" → "@babel/polyfill": "^7.0.0",
・"babel-preset-env": "^1.6.1" → "@babel/preset-env": "^7.1.0"
・"babel-preset-react": "^6.24.1" → "@babel/preset-react": "^7.0.0"
・"babel-preset-stage-0": "^6.24.1" → 消去
babel関連パッケージをbabel7にあげてくれるツール使うと楽にアップグレードできる
babel-upgrade