Как перейти на babel 7

Я попытался обновить Webpack и babel до 4 и 7 соответственно, но не смог заставить его работать. Также официальный документ мало помогает с обновлением.

У меня следующая проблема

compiler error: ERROR in Cannot find module '@babel/core' @ multi main

зависимости, которые я использую:

"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"

Пожалуйста, дайте мне знать, если потребуется дополнительная информация.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
21
0
30 280
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Babel изменил название модуля babel-core на @ babel / core. Просто запустите npm install @babel/core. Это установит последнюю версию ядра Babel.

Большинство пакетов в Babel было переименовано в соответствии с шаблоном @babel/PACKAGE_NAME. Поэтому, если вы хотите выполнить обновление, измените имена пакетов в соответствии с шаблоном и запустите npm install.

Для обновления до Babel 7 вы можете использовать этот руководство по миграции.

Вы можете использовать babel-upgrade для плавного обновления.

https://github.com/babel/babel-upgrade

После этого вам может понадобиться npm prune, чтобы отказаться от устаревших пакетов в node_modules.

Обновлено:

Когда я попробовал babel-upgrade, конфигурация babel и webpack не была изменена. поэтому мне пришлось изменить его вручную. Вот пример.

.babelrc

"presets": ["@babel/env", "@babel/react"]

конфигурация webpack

loader: 'babel-loader',
options: { presets: ['@babel/env', '@babel/react']}

Используйте Бабель-апгрейд

Проверено на [email protected], [email protected] и [email protected]

Вы можете использовать следующий сценарий. (npx только на узле 5+)

npx babel-upgrade --write

Флаг --write записывает обновления в ваши package.json и .babelrc.

В результате вы получите следующие модификации 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"
    ]
  ]
}

Из вышеперечисленных плагинов вам понадобится @babel/plugin-proposal-class-properties @babel/plugin-proposal-private-methods для правильной работы частных свойств, если вы решите их реализовать.

Если вы используете eslint, не забудьте установить парсер как Babel-Eslint, как в вашем файле .eslintrc:

{
    "parser": "babel-eslint"
}

может ли это быть действительным также для babel.config, поскольку в какой-то версии это имя вместо .babelrc?

Carmine Tambascia 23.07.2019 15:20

@CarmineTambascia. Ситуация немного изменилась по сравнению с версией v7.x. Как утверждают документы babel: все параметры API Babel разрешены в зависимости от вашего варианта использования, упомянутого на странице конфигурация.

Priyesh Diukar 24.07.2019 10:47

это тоже следует рассматривать как ответ

Seif Tml 09.11.2020 20:14

Другие вопросы по теме