Antworten:
Nicht require('./package.json')
für einen Beobachtungsprozess verwenden. 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 stoppen und neu starten. Für einen Schluckbeobachtungsprozess ist es am besten, die Methode von bitlinguist zu verwenden, da die Datei jedes Mal, wenn Ihre Aufgabe ausgeführt wird, erneut gelesen und analysiert wird.
var fs = require('fs');
var json = JSON.parse(fs.readFileSync('./package.json'));
require
, den Cache mitdelete require.cache[require.resolve(FILEPATH)];
Dies ist nicht schluckspezifisch.
var p = require('./package.json')
p.homepage
AKTUALISIEREN:
Beachten Sie, dass "require" die Leseergebnisse zwischenspeichert. Dies bedeutet, dass Sie nicht benötigen, in die Datei schreiben, dann erneut anfordern und erwarten können, dass die Ergebnisse aktualisiert werden.
Dies ist eine gute Lösung @Mangled Deutz. Ich selbst habe das zuerst getan, 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 ein bisschen ausführlich ist (obwohl es funktioniert hat). require('./package.json')
ist die beste Lösung:
- Denken Sie daran, './' vor dem Dateinamen hinzuzufügen. Ich weiß, dass es einfach ist, aber es ist der Unterschied zwischen der erforderlichen Methode und der nicht funktionierenden Methode.
Wenn Sie einen Schluck von NPM auslösen, wie zum Beispiel " npm run build " oder so
(Dies funktioniert nur bei Schluck-Run-Triggern von NPM.)
process.env.npm_package_ Object
Dies sollte durch einen Unterstrich für tiefere Objekte getrennt werden.
Wenn Sie eine bestimmte Konfiguration in package.json lesen möchten, wie Sie das in package.json erstellte Konfigurationsobjekt lesen möchten
scripts : {
build: gulp
},
config : {
isClient: false.
}
dann kannst du verwenden
process.env.npm_package_**config_isClient**