Wie Sie benötigen JavaScript mit webpack von einem dynamischen directory
Ich habe einige old-school-plain old JavaScript, ES5, dass muss ich ziehen, in meine Anwendung, webpack als bundler. Das problem ist, dass der Speicherort dieser Dateien wird in einem Ordner, dessen Pfad ist dynamisch. Es scheint, dass webpack funktioniert nicht gut mit Ausdrücken in require
und require.context
nicht erlaubt, Sie überhaupt nicht.
Bekannt für Pfad-Verzeichnisse, um alle Dateien in einem Verzeichnis und dessen Unterverzeichnissen, dieser Ansatz funktioniert:
let domainRequires = require.context('./app/domain', true, /\.js$/);
domainRequires.keys().forEach(domainRequires);
Da kann ich nicht einen Ausdruck verwenden, der in require.context
habe ich versucht nur mit Normalpapier require
und es ist NICHT arbeiten:
require('../../path/to/code/my-library-' + versionNumber + '/domain/clazz.js');
mit den vollen relativen Pfad.
Ich habe auch versucht zu verwenden require.context
aber die Verbesserung der regex-Teil, um es arbeiten und hatte noch nicht das Glück:
require.context('../../path/to/code', true, /^my-library-.*\/domain\/.*\.js$/);
Irgendwelche Gedanken, Anregungen oder Lösungen wäre willkommen. Wenn ich die Notwendigkeit, etwas zu verwenden 3rd-party-mit webpack, das ist auch in Ordnung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Landete ich herauszufinden dieses heraus. Mithilfe der webpack
resolve.alias
ich könnte hinzufügen:in
webpack.config
.Dann in meinem code, kann ich verlangen, dass alle Dateien unter
/domain
über:Ebenfalls konnte ich eine einzelne Datei über:
FWIW, um
versionNumber
ich verwendet Knotensfs
- Modul zum Lesen aus einer json-Datei, die verwendetJSON.parse(file)
und holte sich dann die version obenwebpack.config
Vom Webpack 3.9 (glaube ich) die
commonRequires
ist nicht erforderlich. Ich führe dies in webpack.config.js:Und dann lade ich meine custom Modul:
Nicht sicher, ob ich etwas vermissen von Ihren Anforderungen aber
commonRequires
ist nicht notwendig für mich und Webpack baut diese in Ordnung (und es funktioniert).commonRequires
ist nicht im Zusammenhang mit der Lösung überhaupt (ich habe nie gedacht, es zu verstehen, dass die Art und Weise). Dies war nur ein Beispiel und fordert, dass alle Dateien in einem Verzeichnis auf einem dynamischen Pfad. Wenn Sie zurückblicken auf die akzeptierte Antwort, die Sie sehen können habe ich auch darauf hingewiesen: "Ebenso konnte ich eine einzelne Datei über..."