web-dev-qa-db-de.com

Javascript: Paket.json-Daten in gulpfile.js abrufen

Keine schluckspezifische Frage an sich, sondern wie man Informationen aus der package.json-Datei in der gulpfile.js erhält. Ich möchte zum Beispiel die Homepage oder den Namen bekommen und in einer Aufgabe verwenden.

93
Lane

Verwenden Sie require('./package.json') nicht für einen Überwachungsvorgang. Mit require wird das Modul als Ergebnis der ersten Anforderung aufgelöst. Wenn Sie also Ihre package.json bearbeiten, funktionieren diese Änderungen nur, wenn Sie den Überwachungsprozess anhalten und neu starten. Für einen umfassenden Überwachungsprozess ist es am besten, die Methode von Bitlinguist zu verwenden, da die Datei jedes Mal erneut gelesen und analysiert wird, wenn Ihre Task ausgeführt wird.

var fs = require('fs');

var json = JSON.parse(fs.readFileSync('./package.json'));
104
hapticdata

Dies ist nicht spezifisch für den Schluck.

var p = require('./package.json')
p.homepage

AKTUALISIEREN:

Beachten Sie, dass "angefordert" die Leseergebnisse zwischenspeichert. Dies bedeutet, dass Sie keine Anforderung haben müssen, in die Datei schreiben und dann erneut anfordern und erwarten, dass die Ergebnisse aktualisiert werden.

132
Mangled Deutz

Dies ist eine gute Lösung @Mangled Deutz. Ich habe das zuerst selbst gemacht, aber es hat nicht funktioniert (zurück in einer Sekunde), dann habe ich diese Lösung ausprobiert:

# Gulpfile.coffee
requireJSON = (file) ->
    fs = require "fs"
    JSON.parse fs.readFileSync file

Jetzt sollten Sie sehen, dass dies etwas ausführlich ist (obwohl es funktioniert hat). require('./package.json') ist die beste Lösung:

Spitze

-Erinnern, um vor dem Dateinamen './' hinzuzufügen. Ich weiß, es ist einfach, aber es ist der Unterschied zwischen der geforderten Methode, die funktioniert und nicht funktioniert. 

6
dewwwald

Wenn Sie aus dem NPM einen Schluck auslösen, verwenden Sie " npm run build " oder etwas anderes 

(Dies funktioniert nur für Schlupfauslöser durch NPM)

process.env.npm_package _Object 

dies sollte durch Unterstrich für tiefere Objekte getrennt werden. 

wenn Sie eine bestimmte config in package.json lesen möchten, wie das in object.json erstellte Konfigurationsobjekt

scripts : {
   build: gulp 
},
config : {
   isClient: false.
}

dann kannst du verwenden 

process.env.npm_package_**config_isClient**
0
Manasvi Sareen