web-dev-qa-db-ja.com

Javascript:gulpfile.jsでpackage.jsonデータを取得

Gulp固有の質問自体ではありませんが、gulpfile.js内のpackage.jsonファイルからどのように情報を取得しますか。たとえば、ホームページや名前を取得して、タスクで使用したいです。

97
Lane

監視プロセスにrequire('./package.json')を使用しないでください。 requireを使用すると、最初のリクエストの結果としてモジュールが解決されます。したがって、package.jsonを編集している場合、監視プロセスを停止して再起動しない限り、これらの編集は機能しません。 gulp監視プロセスの場合、タスクが実行されるたびにファイルを再読み取りして解析するため、bitlinguistのメソッドを使用するのが最適です。

var fs = require('fs');

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

これは、gulp固有ではありません。

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

更新:

「require」は読み取り結果をキャッシュすることに注意してください。つまり、要求することはできず、ファイルに書き込み、再度要求して結果が更新されることを期待します。

135
Mangled Deutz

これは@Mangled Deutzの優れたソリューションです。私自身は最初にそれを行いましたが、うまくいきませんでした(すぐに戻って)、この解決策を試しました:

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

ここで、これは少し冗長であることがわかります(動作していても)。 require('./package.json')が最適なソリューションです。

ヒント

-ファイル名の前に「./」を追加することを忘れないでください。私はその単純なことを知っていますが、それはrequireメソッドが機能するかどうかの違いです。

6
dewwwald

"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**
0
Manasvi Sareen