Це спеціальне обмеження, яке додають розробники create-react-app. Він реалізований для того, ModuleScopePluginщоб забезпечити перебування файлів src/. Цей плагін гарантує, що відносний імпорт із вихідного каталогу додатка не досягне його.
Ви можете відключити цю функцію, але лише після ejectроботи проекту create-react-app.
Більшість функцій та її оновлення приховані у внутрішній системі системи створення-реагування додатків. Якщо ви зробите це, у ejectвас більше не буде функцій та його оновлення. Тож якщо ви не готові керувати та конфігурувати додаток, що входить до налаштування веб-пакету тощо, - не робіть ejectоперацій.
Грати за існуючими правилами (перейти на src). Але тепер ви можете знати, як видалити обмеження: виконайте ejectта видаліть ModuleScopePluginз конфігураційного файлу webpack .
Так як створити реагують-додаток v0.4.0 в NODE_PATHзмінному оточенні дозволяє вказати шлях для абсолютного імпорту. А оскільки v3.0.0 NODE_PATH застаріло на користь встановлення baseUrlв jsconfig.jsonабо tsconfig.json.
Абсолютний імпорт дозволяє використовувати import App from 'App'натомість import App from './App'відносно значення, вказаного в базовій URL-адресі.
Ця функція спеціально корисна для монорепортажів або інших питань конфігурації, але не для імпорту зображень чи чогось іншого з publicпапки.
Вміст publicпапки буде розміщений у buildпапці та доступний за відносною URL-адресою. Крім того, все імпортоване буде оброблено веб-пакетом і буде розміщено також у buildпапці.
Якщо ви імпортуєте щось із publicпапки, можливо, ця річ буде дублюватися у buildпапці та буде доступна двома різними URL-адресами (або з різними способами завантаження), що врешті-решт погіршить розмір завантаження пакета.
Імпорт із папки src є кращим і має переваги. Все буде упаковано веб-пакетом у комплект із шматочками оптимального розміру та для найкращої ефективності завантаження .
Існують проміжні рішення, а саме система перемикання, яка дозволяє програмно змінювати конфігурацію веб-пакету. але видаленняModuleScopePlugin плагін не є хорошим рішенням; краще додати повністю працюючі додаткові каталоги, схожі на src.
Наразі create-react-appне підтримує додаткові каталоги, крім srcкореневої папки. Це можна зробити, використовуючи псевдонім reakct-app-rewire
../public/images/logo_2016.pngВи піднялися двічі, спочатку з папки компонентів, а потім із папки src.