Javascript: получить данные package.json в gulpfile.js

Не какой-либо gulp -специальный вопрос per se, но как получить информацию из файла package.json в файле gulpfile.js; Например, я хочу получить домашнюю страницу или имя и использовать ее в задаче.

Ответ 1

Не используйте require('./package.json') для процесса просмотра. Использование require разрешит модуль как результат первого запроса. Поэтому, если вы редактируете файл package.json, эти изменения не будут работать, если вы не остановите процесс просмотра и не перезапустите его. Для процесса просмотра gulp было бы лучше использовать метод bitlinguist, поскольку он будет перечитывать файл и анализировать его каждый раз, когда выполняется ваша задача.

var fs = require('fs');

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

Ответ 2

Это не gulp.

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

UPDATE:

Имейте в виду, что "require" будет кэшировать результаты чтения - это означает, что вы не можете требовать, записать в файл, а затем потребовать еще раз и ожидать, что результаты будут обновлены.

Ответ 3

Это хорошее решение @Mangled Deutz. Сначала я это сделал, но это не сработало (к тому же через секунду), я попробовал это решение:

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

Теперь вы должны увидеть, что это немного подробный (хотя он и работает). require('./package.json') - лучшее решение:

Совет

- помните, чтобы добавить './' перед именем файла. Я знаю его простую, но разница в том, что метод require работает и не работает.

Ответ 4

Если вы запускаете gulp из NPM, например, используя npm run build "или что-то

(Это работает только для gulp запуска триггеров с помощью NPM)

process.env.npm_package_Object

это должно быть разделено символом подчеркивания для более глубоких объектов.

если вы хотите прочитать некоторую конкретную конфигурацию в package.json, как вы хотите прочитать конфигурационный объект, который вы создали в package.json

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

то вы можете использовать

process.env.npm_package_**config_isClient**