回答:
require('./package.json')
監視プロセスには使用しないでください。を使用require
すると、最初のリクエストの結果としてモジュールが解決されます。したがって、package.jsonを編集している場合、監視プロセスを停止して再起動しない限り、それらの編集は機能しません。ガルプウォッチプロセスの場合は、タスクが実行されるたびにファイルを再読み取りして解析するため、ビットリンギストの方法を使用するのが最適です。
var fs = require('fs');
var json = JSON.parse(fs.readFileSync('./package.json'));
require
してキャッシュを削除できますdelete require.cache[require.resolve(FILEPATH)];
これはゴック特有ではありません。
var p = require('./package.json')
p.homepage
更新:
「require」は読み取り結果をキャッシュすることに注意してください。つまり、要求することはできず、ファイルに書き込み、再度要求して、結果が更新されることを期待します。
これは@Mangled Deutzの優れたソリューションです。私自身が最初にそれを行いましたが、それは機能しませんでした(すぐに戻って)、次に私はこの解決策を試しました:
# Gulpfile.coffee
requireJSON = (file) ->
fs = require "fs"
JSON.parse fs.readFileSync file
これで(これは機能しましたが)少し冗長であることがわかります。require('./package.json')
最高のソリューションです:
-ファイル名の前に「./」を追加することを忘れないでください。私はその単純なことを知っていますが、それはrequireメソッドが機能することと機能しないことの違いです。
「npm run build」などを使用してNPMからgulpをトリガーしている場合
(これはNPMによるgulp runトリガーでのみ機能します)
process.env.npm_package_ オブジェクト
これは、より深いオブジェクトの場合はアンダースコアで区切られる必要があります。
package.jsonで作成した構成オブジェクトを読み取りたい場合など、package.jsonで特定の構成を読み取りたい場合
scripts : {
build: gulp
},
config : {
isClient: false.
}
その後、あなたは使うことができます
process.env.npm_package_**config_isClient**