Javascript / webpack: Wie verkette ich alle JSON-Dateien im Verzeichnis mit einer benutzerdefinierten Schleife über Dateien?

8

Ich baue ein Reaktionspaket mit dem Webpack. Ich versuche derzeit, json-Dateien in ein Objekt zu verketten, das mit i18next verwendet werden soll. Ich finde es einfach, ich möchte keine überkomplizierten Lösungen verwenden.

Ich habe eine Verzeichnisstruktur wie

  

messages / locale_name / domain_name.json

Wie kann ich alle JSON-Dateien in einem regulären Objekt in meinem Code importieren?

Bisher kämpfe ich am Anfang, da ich Vorschläge gefunden habe, die benötigt werden ("fs"), aber webpack sagt mir, dass es das fs-Modul nicht lösen kann und ich habe gesehen, dass ich es nicht so installieren kann ist Teil der Standardknotenkonfiguration.

Einige Hilfe geschätzt.

Danke!

    
Sébastien 06.05.2016, 12:47
quelle

4 Antworten

4

Nach einem viel von herumfummeln, war es eigentlich ziemlich einfach. Unten ist, was ich am Ende hatte. Der Schlüssel war, den JSON Loader richtig einzurichten.

Installieren Sie den JSON Loader für das Webpack

  1. npm install --save-dev json-loader

Fügen Sie Ihren Webpack-Ladeprogrammen den JSON Loader hinzu

  1. Dies ist erforderlich, um den Kontext zu verwenden, um die Dateien einzulesen.
  2. Fügen Sie dies Ihren webpack.config.js Loadern hinzu { test: /\.json$/, loader: 'json' },
  3. Das Finale könnte etwa so aussehen:
%Vor%

Verwenden Sie Kontext , um die Dateien zu laden und in einem Array zu speichern

in meiner app.js:

%Vor%
  1. Wo "Module" ist ein Unterverzeichnis von meiner app.js (./src/module in meinem Fall).
  2. Alle JSON-Dateien werden in ein Array [Object, Object, Object] geladen, das ich in var modules speichere
Jake 19.05.2016 18:19
quelle
0

Dies geschieht am besten mit json-loader

Wenn es installiert ist ( npm install json-loader --save-dev ), können Sie entweder wie in der Readme-Datei des Projekts beschrieben importieren:

%Vor%

Oder Sie könnten Ihrer webpack.config.js einen Loader hinzufügen und den json normal importieren:

webpack.config.js:

%Vor%

Und in deiner Quelle:

%Vor%

Oder natürlich könnten Sie ES6-Importe verwenden, wenn Sie das in Ihrem Projekt verwenden

    
mjohnsonengr 06.05.2016 12:56
quelle
0

@ Sébastien schau dir dieses Plugin an Ссылка

Sie können ein Array von Dateien / Mustern als Eingabe übergeben und eine einzelne Datei als json ausgeben.

zum Beispiel, wenn Sie viele json-Dateien in einem Verzeichnis / node_modules / module-a haben und / node_modules / modul-b

Sie können das folgende Muster verwenden, um alle jsons in einer einzelnen json-Datei wie unten zu verketten

new MergeJsonWebpackPlugin({ "files": ['./jsons/file1.json', './jsons/file3.json', './jsons/file2.json'], "output":{ "fileName":"./dist/result.json" } })

Haftungsausschluss: Ich habe zu diesem Plugin beigetragen

    
sudharsan tk 09.02.2017 20:42
quelle
0

Um json-Dateien zusammenzuführen, verwenden Sie merge-webpack-plugin (auch mit Gruppierung zum Beispiel nach Dateiname)

Beispielkonfiguration:

%Vor%

Es werden diese Beispieldateien nach Dateiname in Gruppen eingeteilt. Jede Gruppe wird geladen und zusammengeführt und in der Ziel-JSON-Datei gespeichert. Um eine zusammengeführte Zieldatei zu benötigen, benötigen Sie nur eine Quelldatei und laden diese.

    
fl-web 21.04.2017 17:13
quelle