Решаем ад импортов в Create React App: алиасы через CRACO или react-app-rewired
- Опубликовано
- • 1 мин чтения•--- просмотров
Очень важно иметь единообразные import-конструкции в твоих react-проектах и избегать ада относительных путей: например, ../../../utils/smth.ts выглядит намного уродливее, чем ~/utils/smth.ts.
К сожалению, последние версии typescript поддерживают этот трюк всё хуже и хуже (если честно, не знаю почему).
Используем пакет @craco/craco
Шаги установки:
yarn add @craco/cracoСоздай файл
craco.config.jsв корне проектаПомести текст ниже в
craco.config.js:const path = require('path'); module.exports = { webpack: { alias: { '~': path.resolve(__dirname, 'src'), }, }, };Измени react-скрипты в
package.jsonна:"scripts": { "start": "craco start", "build": "craco build", "test": "craco test", "eject": "craco eject" }Запусти проект и проверь, что всё работает:
yarn start
Используем react-app-rewired и customize-cra
Шаги установки:
yarn add react-app-rewiredyarn add customize-craВ
config-overrides.jsдобавь эти строки:const { addWebpackAlias } = require('customize-cra'); const path = require('path'); //... in module.export of configuration section: addWebpackAlias({ '~': path.resolve(__dirname, './src'), // ... });И не забудь добавить похожие алиасы в
tsconfig.json:"paths": { "~/*": [ "./src/*" ], },
По теме
Статьи
Create React App с несколькими точками входа
Практическое руководство по кастомизации Create React App для нескольких точек входа, позволяющее создавать многостраничные React-приложения с отдельными бандлами и HTML-файлами.
Как я связал React-компоненты с внешним JS: история разработчика
Как разработчику, мне нужно было вызывать React-модалку с кнопки SharePoint Ribbon - соединяя классический JS и современный React. В этом посте я объясняю задачу, решение через глобальный объект window и то, как я сделал React-стейт доступным извне бандла.
React.js i18n: настройка и использование локализации
Практическое руководство по настройке и использованию i18n для локализации React.js-приложений, с примерами кода, советами по конфигурации и лучшими практиками.
Открыт для работы по контракту
Я доступен для работы по контракту. Если у вас есть интересная идея проекта, запишитесь на звонок через Calendly.
Записаться на 30-минутный звонок