这本身并不是一个特定于 Gulp 的问题,而是如何从 Gulpfile.js 中的 package.json 文件获取信息; 例如,我想获取主页或名称,并在任务中使用它。
This is not gulp specific.
var p = require('./package.json') p.homepage
UPDATE:
Be aware that "require" will cache the read results - meaning you cannot require, write to the file, then require again and expect the results to be updated.
This is a good solution @Mangled Deutz. I myself first did that but it did not work (Back to that in a second), then I tried this solution:
# Gulpfile.coffee requireJSON = (file) -> fs = require "fs" JSON.parse fs.readFileSync file
Now you should see that this is a bit verbose (even though it worked). require('./package.json') is the best solution:
require('./package.json')
-remember to add './' in front of the file name. I know its simple, but it is the difference between the require method working and not working.
Don't use require('./package.json') for a watch process, as using require will resolve the module as the results of the first request.
require
So if you are editing your package.json those edits won't work unless you stop your watch process and restart it.
package.json
For a gulp watch process it would be best to re-read the file and parse it each time that your task is executed, by using node's fs method
fs
var fs = require('fs') var json = JSON.parse(fs.readFileSync('./package.json'))
If you are triggering gulp from NPM, like using "npm run build" or something
(This only works for gulp run triggers by NPM)
process.env.npm_package_Object
this should be seprated by underscore for deeper objects.
if you want to read some specific config in package.json like you want to read config object you have created in package.json
scripts : { build: gulp }, config : { isClient: false. }
then you can use
process.env.npm_package_**config_isClient**