Machen absolute Pfade relativ zum Projekt-Stammverzeichnis im Webpack
Ich finde, dass muss ich zu geben ../
viel zu require()
- Dateien. Meine Verzeichnis-Struktur, umfasst die folgenden:
js/
components/
...
actions/
...
Aus den Komponenten-Ordner, muss ich import foo from '../actions/fooAction'
. Ist es möglich, das root-Verzeichnis das Stammverzeichnis des Projekts? I. e. Ich will tun import foo from '/actions/fooAction'
statt. Ich habe versucht, Webpack s resolve.root
option, aber es scheint nicht, etwas zu tun.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
resolve.root
option nicht modifizieren wie Datei-Module aufgelöst werden.Den
/
löst die Wurzel des Dateisystems.Vielleicht, was Sie wollen, ist zu beheben Ihre
js
Ordner als Module-Verzeichnis.webpack.config.js
Mit dieser Konfiguration Hinzugefügt, um Ihre config-Datei wird Ihnen sagen, webpack, um mögliche
import
oderrequire
im Verhältnis zu Ihrerjs
Ordner. Dann, statt mitwerden Sie in der Lage:
Dagegen das fehlen von
/
am Anfang.resolve['root']
nimmt ein array jetzt: github.com/webpack/docs/wiki/configuration#resolverootWerde ich diese Antwort etwas anders ohne mithilfe zu lösen.root. Alles @dresyecat sagte, ist richtig. Aber ich ging einfach durch die gleiche Bewegung, der Wechsel von relativen Pfaden überall zu Modul Pfade. Hier ist der doc erklärt, dass die drei verschiedenen Arten von Pfaden, die Sie verwenden können, in der import-Anweisung.
Sie Fragen zu verwenden Sie eine Modul-Pfad, die ich glaube, ist der bevorzugte Weg zu gehen.
Das problem ist, dass standardmäßig, Modul-Pfade funktionieren nur mit Dingen, die importiert, via npm, weil die neue Module variable auf beheben, standardmäßig ["node_modules"]. Dies erlaubt den import von 3rd-party-code von npm wirklich leicht. Aber es bedeutet, importieren Sie Ihre code mit einem Modul-Pfad muss ein config ändern. BTW, die Module genannt moduleDirectories in früheren Versionen. Hier sind die docs für das auflösen von Variablen-Konfiguration.
Ok, vorausgesetzt, Sie haben eine directory-Struktur wie diese:
Können Sie die Module-Verzeichnis:
Ein paar wichtige Punkte:
Sicher sein, importieren Sie die Pfad-Komponente in Ihrer Konfiguration, so dass Pfad definiert ist
var path = require('Pfad');
Dann können Sie den folgenden (wie auch schon darauf hingewiesen - ohne führenden /), um importieren Sie Ihre Komponenten mit dem Modul path form:
Den resolving-Prozess ist im Grunde simpel und unterscheidet zwischen drei Varianten:
Die ersten beiden sind ziemlich offensichtlich, die Dritte verdient einen genaueren Blick:
Absolute auf Ihr Dateisystem in der Tat
Relativ zur aktuellen Datei (wenn die Datei in
src/foo/bar
oderwebpack/config/subconfig
, dann in der Tat das ist es...)Im Gegensatz zu
import
(die Griffe 1+2 so ziemlich die gleiche Weise, aber würde senden Sie auf der Suche innode_modules
rechts Weg) Weg 'Modul' in der Tat bedeutet, dass Ihr Projekt-root-Pfaden, ohne dass ein lösen müssen, wieoutput.path
in Ihrem webpack config... und: (auf die Lösung) Nur 3 unterliegtresolve.root
undresolve.moduleDirectories
Lösung, siehe webpack docs hier