Gulp固有の質問自体ではありませんが、gulpfile.js内のpackage.jsonファイルからどのように情報を取得しますか。たとえば、ホームページや名前を取得して、タスクで使用したいです。
監視プロセスにrequire('./package.json')
を使用しないでください。 require
を使用すると、最初のリクエストの結果としてモジュールが解決されます。したがって、package.jsonを編集している場合、監視プロセスを停止して再起動しない限り、これらの編集は機能しません。 gulp監視プロセスの場合、タスクが実行されるたびにファイルを再読み取りして解析するため、bitlinguistのメソッドを使用するのが最適です。
var fs = require('fs');
var json = JSON.parse(fs.readFileSync('./package.json'));
これは、gulp固有ではありません。
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実行トリガーに対してのみ機能します)
process.env.npm_package _Object
より深いオブジェクトの場合は、アンダースコアで区切る必要があります。
package.jsonで作成した構成オブジェクトを読み取りたいように、package.jsonの特定の構成を読み取りたい場合
scripts : {
build: gulp
},
config : {
isClient: false.
}
その後、使用できます
process.env.npm_package_**config_isClient**