Nie jest to pytanie specyficzne dla gulp per se, ale jak można uzyskać informacje z pliku package.json w pliku gulpfile.js; Na przykład chcę uzyskać stronę główną lub nazwę i użyć jej w zadaniu.
Odpowiedzi:
Nie używaj require('./package.json')
do oglądania. Użycie require
rozwiąże moduł jako wynik pierwszego żądania. Więc jeśli edytujesz plik package.json, te zmiany nie będą działać, dopóki nie zatrzymasz procesu oglądania i nie uruchomisz go ponownie. W przypadku procesu obserwacyjnego najlepiej byłoby użyć metody bitlinguist, ponieważ ponownie odczyta plik i przeanalizuje go za każdym razem, gdy zadanie zostanie wykonane.
var fs = require('fs');
var json = JSON.parse(fs.readFileSync('./package.json'));
require
i usunięcie pamięci podręcznej za pomocądelete require.cache[require.resolve(FILEPATH)];
To nie jest specyficzne dla łyka.
var p = require('./package.json')
p.homepage
AKTUALIZACJA:
Należy pamiętać, że polecenie „require” zapisze wyniki odczytu w pamięci podręcznej - co oznacza, że nie można wymagać, zapisywać do pliku, a następnie wymagać ponownie i oczekiwać, że wyniki zostaną zaktualizowane.
To dobre rozwiązanie @Mangled Deutz. Sam najpierw to zrobiłem, ale nie zadziałało (wróć do tego za sekundę), potem wypróbowałem to rozwiązanie:
# Gulpfile.coffee
requireJSON = (file) ->
fs = require "fs"
JSON.parse fs.readFileSync file
Teraz powinieneś zobaczyć, że jest to trochę rozwlekłe (mimo że zadziałało). require('./package.json')
to najlepsze rozwiązanie:
-pamiętaj, aby dodać „./” przed nazwą pliku. Wiem, że jest to proste, ale jest to różnica między działaniem wymaganej metody a niedziałaniem.
Jeśli wyzwalasz łyka z NPM, na przykład używając " npm run build " lub czegoś podobnego
(Działa to tylko w przypadku wyzwalaczy uruchamiania łykiem przez NPM)
process.env.npm_package_ Object
w przypadku głębszych obiektów powinno to być oddzielone podkreśleniem.
jeśli chcesz przeczytać określoną konfigurację w package.json, tak jak chcesz odczytać obiekt konfiguracyjny, który utworzyłeś w package.json
scripts : {
build: gulp
},
config : {
isClient: false.
}
wtedy możesz użyć
process.env.npm_package_**config_isClient**