Réponse courte :
run npx babel-upgrade
(alors vous pouvez jeter un coup d'œil dans package.json
pour vérifier ce qui a changé)
Réponse longue :
Pour RN 0.57.x, après avoir lu les docs babel et babel-upgrade, j'ai réalisé qu'il était suffisant d'avoir toutes les anciennes dépendances de babel dans devDependencies pour mon projet :
"dependencies": {
.........
"react": "16.3.1",
"react-native": "0.55.4",
},
"devDependencies": {
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-latest": "^6.24.1",
"babel-preset-stage-0": "^6.24.1",
"babel-register": "^6.24.1",
"react-native": "0.55.4",
"babel-eslint": "^8.2.2",
"babel-plugin-syntax-object-rest-spread": "^6.13.0",
"babel-plugin-transform-object-rest-spread": "^6.23.0",
"babel-preset-react-native": "^4.0.0",
"babel-preset-react-native-stage-0": "^1.0.1",
.....
},
1) J'ai utilisé npx
y babel-upgrade
( npx
est déjà inclus dans npm
versions >= 5.2.0) Si vous avez des versions plus anciennes npm
vous devez installer npx
globalement.
npx
vous permet d'exécuter babel-upgrade
sans l'installer localement.
2) J'ai couru npx babel-upgrade
( sans le --write option
) pour voir comment la mise à niveau affectera mon paquet.json deps)
3) J'ai couru npx babel-upgrade --write
4) J'ai mis la version RN à 0.57.1 et changé la dépendance de babel-preset de "babel-preset-react-native": "^5"
à "metro-react-native-babel-preset": "^0.45.0"
et .babelrc
configuration à :
{
"presets": ["module:metro-react-native-babel-preset"]
}
comme indiqué dans les instructions du journal des modifications RN.
Ahora package.json
ressemble à ça :
"dependencies": {
"react": "16.5.0",
"react-native": "0.57.1",
.......
}
"devDependencies": {
"@babel/core": "^7.0.0",
"@babel/plugin-proposal-class-properties": "^7.0.0",
"@babel/plugin-proposal-decorators": "^7.0.0",
"@babel/plugin-proposal-do-expressions": "^7.0.0",
"@babel/plugin-proposal-export-default-from": "^7.0.0",
"@babel/plugin-proposal-export-namespace-from": "^7.0.0",
"@babel/plugin-proposal-function-bind": "^7.0.0",
"@babel/plugin-proposal-function-sent": "^7.0.0",
"@babel/plugin-proposal-json-strings": "^7.0.0",
"@babel/plugin-proposal-logical-assignment-operators": "^7.0.0",
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
"@babel/plugin-proposal-numeric-separator": "^7.0.0",
"@babel/plugin-proposal-object-rest-spread": "^7.0.0",
"@babel/plugin-proposal-optional-chaining": "^7.0.0",
"@babel/plugin-proposal-pipeline-operator": "^7.0.0",
"@babel/plugin-proposal-throw-expressions": "^7.0.0",
"@babel/plugin-syntax-dynamic-import": "^7.0.0",
"@babel/plugin-syntax-import-meta": "^7.0.0",
"@babel/plugin-syntax-object-rest-spread": "^7.0.0",
"@babel/plugin-transform-runtime": "^7.0.0",
"@babel/preset-env": "^7.0.0",
"@babel/preset-flow": "^7.0.0",
"@babel/register": "^7.0.0",
"babel-core": "^7.0.0-bridge.0",
"babel-preset-react-native-stage-0": "^1.0.1",
.....
}
Je ne suis pas sûr que toutes les nouvelles dépendances ajoutées par le programme gradle-upgrade
sont nécessaires mais le projet se construit et fonctionne correctement pour Android et ios.
Si vous trouvez une meilleure solution ou des améliorations pour cette mise à jour de babel, veuillez ajouter un commentaire ou une nouvelle réponse, je serai heureux de mettre à jour ma réponse ou d'en accepter une nouvelle meilleure.
Sources :
https://github.com/react-native-community/react-native-releases/blob/master/CHANGELOG.md#057
https://github.com/babel/babel-upgrade
Pour RN 0.58.6 J'ai remarqué que je n'ai pas besoin d'autant de deps babel. J'ai remarqué cela en créant un nouveau projet avec un react-native init commandement.
Mon paquet.json ressemble maintenant à ceci :
{
"dependencies": {
"react": "16.6.3",
"react-native": "0.58.6",
// ....
},
"devDependencies": {
"@babel/core": "^7.0.0-0",
"babel-core": "^7.0.0-bridge.0",
"babel-eslint": "^10.0.1",
"babel-jest": "24.1.0",
"jest": "24.1.0",
"metro-react-native-babel-preset": "0.53.0",
"react-test-renderer": "16.6.3",
// ....
},
"jest": {
"preset": "react-native",
// ...
}
}
NOTE : Pour IOS : J'ai pu le construire dans IOS sans aucun problème. react/react-native
deps dans le fichier pod. Je les ai ajoutés/réajoutés dans Cadres et bibliothèques liés section