J'ai essayé de mettre à niveau Webpack et babel à 4, 7 respectivement, mais je n'ai pas pu le faire fonctionner. De plus, le document officiel n'aide pas beaucoup avec la mise à niveau
Je reçois le problème suivant
erreur du compilateur: ERREUR dans le module '@ babel/core' @ multi main introuvable
dépendances que j'utilise:
"babel-core": "^6.26.3",
"babel-eslint": "^9.0.0",
"babel-loader": "^8.0.0",
"babel-plugin-transform-class-properties": "^6.24.1",
"babel-plugin-transform-object-rest-spread": "^6.26.0",
"babel-polyfill": "^6.26.0",
"babel-preset-env": "^1.7.0",
"babel-preset-react": "^6.24.1",
"webpack": "^4.15.0",
"webpack-cli": "^3.0.8",
"webpack-dev-server": "^3.1.4"
Veuillez me faire savoir si plus de détails sont nécessaires.
Babel a changé le nom du module babel-core
à @ babel/core . Exécutez simplement npm install @babel/core
. Cela installera la dernière version de Babel core.
La plupart des packages de Babel ont été renommés pour suivre le modèle @babel/PACKAGE_NAME
. Donc, si vous souhaitez mettre à niveau, modifiez les noms des packages pour suivre le modèle et exécutez npm install
.
Pour passer à Babel 7, vous pouvez utiliser ceci guide de migration .
Utilisez babel-upgrade
Testé sur [email protected] , [email protected] et [email protected]
Vous pouvez utiliser le script suivant. (npx sur le nœud 5+ uniquement)
npx babel-upgrade --write
L'indicateur --write écrit les mises à jour dans vos packages.json et .babelrc.
Vous vous retrouverez avec les modifications suivantes à package.json:
"devDependencies": {
"@babel/core": "^7.4.0",
"@babel/plugin-proposal-class-properties": "^7.0.0",
"@babel/plugin-proposal-json-strings": "^7.0.0",
"@babel/plugin-proposal-private-methods": "^7.4.0",
"@babel/plugin-syntax-dynamic-import": "^7.0.0",
"@babel/plugin-syntax-import-meta": "^7.0.0"
}
. babelrc
{
"plugins": [
"@babel/plugin-syntax-dynamic-import",
"@babel/plugin-syntax-import-meta",
[
"@babel/plugin-proposal-class-properties"
],
"@babel/plugin-proposal-json-strings",
[
"@babel/plugin-proposal-private-methods"
]
]
}
Parmi les plugins ci-dessus, vous avez besoin de @babel/plugin-proposal-class-properties @babel/plugin-proposal-private-methods
pour que les propriétés privées fonctionnent correctement si vous choisissez de les implémenter.
Si vous utilisez eslint, n'oubliez pas de définir votre analyseur comme babel-eslint comme dans votre fichier . Eslintrc:
{
"parser": "babel-eslint"
}
Vous pouvez utiliser babel-upgrade pour une mise à niveau fluide.
https://github.com/babel/babel-upgrade
Vous pourriez avoir besoin de npm Prune
après cela afin d'éliminer les paquets obsolètes dans node_modules.
MODIFIER:
Lorsque j'ai essayé babel-upgrade, la configuration de babel et webpack n'a pas été modifiée. j'ai donc dû le changer manuellement. Voici l'exemple.
.babelrc
"presets": ["@babel/env", "@babel/react"]
config webpack
loader: 'babel-loader',
options: { presets: ['@babel/env', '@babel/react']}