Как избежать использования относительного импорта пути (/../../../redux/action/action1) в приложении create-response-app

Я использую пакет create-react-app для создания реактивного веб-сайта. Я использовал относительные пути во всем приложении для импорта компонентов, ресурсов, сокращений и т.д., Например, import action from '../../../redux/action

Я пробовал использовать module-alis пакет npm, но без успеха. Есть ли какой-либо плагин, который я могу использовать для импорта на основе имени папки или псевдонима?

Например, import action from '@redux/action' или import action from '@resource/css/style.css'

Ответ 1

Создайте файл с именем .env в корне проекта и напишите там:

NODE_PATH=src

Затем перезапустите сервер разработки. Вы должны иметь возможность импортировать что-либо внутри src без относительных путей.

Примечание. Я бы не рекомендовал вызывать вашу папку src/redux, потому что теперь запутывает, относится ли redux к вашему приложению или библиотеке. Вместо этого вы можете вызвать свою папку src/app и импортировать вещи из app/....

Мы намеренно не поддерживаем собственный синтаксис типа @redux, поскольку он несовместим с алгоритмом разрешения Node.

Ответ 2

в файле package.json,

извлечь этот код в объект сценариев, как это..

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

это включит импорт абсолютных путей в вашем приложении

Ответ 3

Мы можем использовать свойство разрешения webpack 2 в конфигурации webpack.

Пример конфигурации веб-пакета с помощью разрешения:

Здесь компоненты и 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';

Webpack 2 Решите ссылку

Ответ 4

Я использую babel-plugin-module-resolver для моего проекта, чтобы решить эту проблему. babel-plugin-module-resolver также совпадает с module-alis. Поэтому я думаю, что вам нужно просто решить проблему с помощью модуля-alis.

Потому что вы не сказали нам, почему использование модуля-alis завершилось неудачей? Поэтому я не могу показать, как это исправить.

Не отказывайтесь от своего решения, пока вы не знаете причину!