Wie erstelle ich eine Importverknüpfung/einen Importalias in der Create-React-App?
Lesezeit: 5 Minuten
ab
Wie lege ich Importverknüpfungen/Aliase in der Create-React-App fest? Davon:
import { Layout } from '../../Components/Layout'
dazu:
import { Layout } from '@Components/Layout'
Ich habe ein webpack 4.42.0-Version. Ich habe keine webpack.config.js-Datei im Stammverzeichnis. Ich habe versucht, selbst eines mit diesem Code zu erstellen:
Aber es scheint nicht zu funktionieren. Ich habe das gesehen NODE_PATH=. Variante in .env Datei. Aber ich glaube, es ist veraltet – es ist besser, es nicht zu verwenden. Und außerdem habe ich eine posstcss.config.js Datei. Weil ich TailwindCss installiert habe und die CSS-Bibliothek dort importiere. Ich habe versucht, den gleichen Code dort einzufügen, aber es hat auch nicht funktioniert.
Bei der Arbeit mit create-react-appdie Webpack-Konfiguration wird mit gelesen react-script die wirklich alle Prozesse beim Einsatz von CRA abwickelt. Entweder könnte jeder Versuch, parallele Webpack-Konfigurationen auszuführen, einige Einstellungen stören, oder Sie müssen umfangreiche Konfigurationen vornehmen. Brauchen Sie diese Veränderung wirklich? Wie wäre es mit der Verwendung relativer Pfade, wenn Sie kürzere Importe benötigen?
– MwamiTovi
24. Juli 2020 um 6:45 Uhr
Beantwortet das deine Frage? So vermeiden Sie die Verwendung relativer Pfadimporte (/../../../redux/action/action1) in der Create-React-App
– Emile Bergeron
8. Januar 2021 um 14:36 Uhr
@EmileBergeron, um diese Frage geht es Aliase keine relativen/absoluten Pfade
– Dennis Vash
10. Mai 2021 um 16:33 Uhr
@DennisVash-Aliase sind eine der Lösungen, die in diesem anderen Thread aufgeführt sind, von dem diese Frage ein Duplikat ist.
– Emile Bergeron
10. Mai 2021 um 16:49 Uhr
In Ihrem Duplikat werden Aliase nur einmal erwähnt, und die zugehörige Antwort ist eine Veröffentlichung der Antwortbibliothek.
Sie können jederzeit absolute Importe über durchführen jsconfig.jsondie Frage dreht sich um die Herstellung Aliase
– Dennis Vash
1. April 2021 um 9:01 Uhr
@DennisVash die Frage ist nicht Es geht um Import-Aliase Pfadverknüpfungen importieren, worauf diese Antwort richtig eingeht. Die Tatsache, dass Aliase eine von mehreren Möglichkeiten sind, die Länge von Importpfaden zu reduzieren, macht diese Antwort nicht ungültig.
– Emile Bergeron
10. Mai 2021 um 17:04 Uhr
Funktioniert, aber ich denke, es ist fehlerhaft. Es könnte zu Konflikten mit Paketnamen kommen und macht nicht klar, dass die Importe relativ zum src-Ordner im Quellcode sind.
– Janis Jansen
24. Juni 2022 um 8:25
dipenparmar12
Am einfachsten können Sie dies mit den folgenden Schritten archivieren. (auf die gleiche Weise wie @DennisVash es gezeigt hat, aber in einfacher Form)
Installation – CRACO installieren und einrichten.
yarn add @craco/craco
# OR
npm install @craco/craco --save
Ein … kreieren craco.config.js Datei im Stammverzeichnis und konfigurieren Sie CRACO:
// Before
import Button from "./form/Button"
import { Layout } from '../../Components/Layout'
// After
import Button from "@/form/Button"
import { Layout } from '@Components/Layout'
// Absolute path: paths which are relative to a specific path
import Input from 'components' // src/components
import UsersUtils from 'page/users/utils' // src/page/users/utils
// Alias path: other naming to specific path
import Input from '@components' // src/components
import UsersUtils from '@userUtils' // src/page/users/utils
Damit Webpacks Aliase Damit es funktioniert, müssen Sie die Standardeinstellung konfigurieren webpack.config.js von create-react-app.
Der offizieller Weg Ist zu verwenden eject Skript. Aber die empfohlener Weg besteht darin, eine Bibliothek zu verwenden, ohne sie auszuwerfen (finden Sie dafür die modernste Bibliothek).
VSCode IntelliSense
Darüber hinaus sollten Sie hinzufügen jsconfig.json Datei für den Pfad IntelliSense in VSCode (oder tsconfig.json), siehe Folgefrage.
Jetzt funktioniert dieser Code mit IntelliSense:
// NOTE THAT THOSE ARE ALIASES, NOT ABSOLUTE PATHS
// AutoComplete and redirection works
import {ColorBox} from '@atoms';
import {RECOIL_STATE} from '@state';
Gilt das heute noch? Ich habe versucht, Game.js einzufügen src/componentsdann verwenden import Game from 'components/Game'; - it didn't work. Gave me the error saying Anfragen, die im aktuellen Verzeichnis aufgelöst werden sollen, müssen mit „./“ beginnen. Anfragen, die mit einem Namen beginnen, werden als Modulanfragen behandelt und in Modulverzeichnissen aufgelöst…` – möglicherweise hat sich dieses Verhalten geändert.
– Jez
30. August 2022 um 0:45
Nur zur Vorsicht: Craco ist jetzt im Grunde aufgegeben und bleibt bei einer alten Version der Create-React-App hängen. Ich würde davon abraten, es zu verwenden. Ich würde dies auch zur obigen Antwort hinzufügen, da dies keine gute Idee ist, wenn Sie gerade ein neues Projekt beginnen. github.com/dilanx/craco/issues/378#issuecomment-1108663751
– sethreidnz
29. September 2022 um 23:27 Uhr
Update craco wurde endlich aktualisiert und meine obige Nachricht stimmt nicht mehr!
– sethreidnz
28. April um 8:06
Wenn Sie Folgendes verwenden möchten:
// this:
import MyUtilFn from 'utils/MyUtilFn';
// Instead of this:
import MyUtilFn from '../../../../utils/MyUtilFn';
Verwenden Sie das Node-Modul-Plugin zum Auflösen der URLs https://www.npmjs.com/package/babel-plugin-module-resolver. Indem Sie es installieren und zu Ihrer webpack/babel.rc-Datei hinzufügen.
Bei der Arbeit mit
create-react-app
die Webpack-Konfiguration wird mit gelesenreact-script
die wirklich alle Prozesse beim Einsatz von CRA abwickelt. Entweder könnte jeder Versuch, parallele Webpack-Konfigurationen auszuführen, einige Einstellungen stören, oder Sie müssen umfangreiche Konfigurationen vornehmen. Brauchen Sie diese Veränderung wirklich? Wie wäre es mit der Verwendung relativer Pfade, wenn Sie kürzere Importe benötigen?– MwamiTovi
24. Juli 2020 um 6:45 Uhr
Beantwortet das deine Frage? So vermeiden Sie die Verwendung relativer Pfadimporte (/../../../redux/action/action1) in der Create-React-App
– Emile Bergeron
8. Januar 2021 um 14:36 Uhr
@EmileBergeron, um diese Frage geht es Aliase keine relativen/absoluten Pfade
– Dennis Vash
10. Mai 2021 um 16:33 Uhr
@DennisVash-Aliase sind eine der Lösungen, die in diesem anderen Thread aufgeführt sind, von dem diese Frage ein Duplikat ist.
– Emile Bergeron
10. Mai 2021 um 16:49 Uhr
In Ihrem Duplikat werden Aliase nur einmal erwähnt, und die zugehörige Antwort ist eine Veröffentlichung der Antwortbibliothek.
– Dennis Vash
20. Mai 2021 um 6:41 Uhr