Как избежать использования импорта относительного пути (/../../../ redux / action / action1) в create-react-app
Я использую пакет create-react-app для создания веб-сайта react. Я использовал относительные пути по всему моему приложению для импорта компонентов,ресурсов, redux и т. д. например, import action from '../../../redux/action
Я пробовал использовать модуль-ались пакет npm, но без успеха. Есть ли плагин, который я могу использовать для импорта на основе имени папки или псевдоним?
например., import action from '@redux/action'
или import action from '@resource/css/style.css'
4 ответов
создайте файл с именем .env
в корне проекта и напишите там:
NODE_PATH=src
затем перезапустите сервер разработки. Вы должны иметь возможность импортировать что-нибудь внутри src
без относительных путей.
примечание Я бы не рекомендовал называть вашу папку src/redux
потому что теперь это сбивает с толку, то ли redux
импорт относится к вашему приложению или библиотеке. Вместо этого вы можете вызвать свою папку src/app
и импортировать вещи из app/...
.
мы намеренно не поддержка пользовательского синтаксиса, как @redux
потому что он не совместим с алгоритмом разрешения узла.
мы можем использовать свойство разрешения webpack 2 в конфигурации webpack.
пример конфигурации webpack с помощью resolve:
здесь компонент и utils являются независимыми папками, содержащими компоненты React.
resolve: {
modules: ['src/scripts', 'node_modules'],
extensions: ['.jsx', '.js'],
unsafeCache: true,
alias: {
components: path.resolve(__dirname, 'src', 'scripts', 'components'),
utils: path.resolve(__dirname, 'src', 'scripts', 'utils'),
}
}
после этого мы можем импортировать непосредственно в файлы:
import UiUtils from 'utils/UiUtils';
import TabContent from 'components/TabContent';
Я использую babel-plugin-module-resolver для моего проекта, чтобы решить эту проблему. babel-плагин-модуль-решатель также как и модуль-ались. Поэтому я думаю, что вы должны просто решить, используя модуль-ались
в пакет.файл json,
извлеките этот код в объекте scripts следующим образом..
"scripts": {
"start": "node scripts/start.js",
"build": "node scripts/build.js",
"test": "node scripts/test.js --env=jsdom",
"eject": "NODE_PATH=src/ react-scripts eject"
},
Это позволит абсолютный путь импорта в вашем приложении