Краткий ответ:
run npx babel-upgrade
(тогда вы можете посмотреть package.json
, чтобы проверить, что изменилось)
Длинный ответ :
Для RN 0.57.x после прочтения документации по babel и babel-upgrade я понял, что достаточно иметь все старые зависимости babel внутри devDependencies для моего проекта:
"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) Я использовал npx
и babel-upgrade
(npx
уже включен в npm
версии> = 5.2.0) Если у вас есть более старые версии npm
, у вас естьдля установки npx
глобально.
npx
позволяет запустить babel-upgrade
без локальной установки.
2) Я запустил npx babel-upgrade
(без --write option
), чтобы увидеть, как обновление повлияет на мой пакет.json)
3) Я запустил npx babel-upgrade --write
4) Я установил версию RN на 0,57.1 и изменил зависимость предустановки babel с "babel-preset-react-native": "^5"
на "metro-react-native-babel-preset": "^0.45.0"
и .babelrc
конфигурацию на:
{
"presets": ["module:metro-react-native-babel-preset"]
}
, как написано в инструкциях журнала изменений RN.
Сейчасpackage.json
выглядит так:
"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",
.....
}
Я не уверен, нужны ли все новые зависимости, добавленные gradle-upgrade
, но проект собирается и работает нормально как для Android, так и для iOS.
Если вы найдете лучшее решение или улучшения для этогоОбновление Babel, пожалуйста, добавьте комментарий или добавьте новый ответ, я буду рад обновить мой ответ или принять новый лучший.
Источники:
https://github.com/react-native-community/react-native-releases/blob/master/CHANGELOG.md#057
https://github.com/babel/babel-upgrade
Для РН 0,58,6 Я заметил, что мне не нужно так много вавилонских капсул.Я заметил, что это создает новый проект с помощью команды act-native init .
Мой package.json файл теперь выглядит так:
{
"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",
// ...
}
}
ПРИМЕЧАНИЕ: Для IOS: я смог собрать его в IOS без каких-либо react/react-native
deps в файле pod.Я добавил / повторно добавил их в Связанные фреймворки и библиотеки раздел