本身不是gulp特定的问题,但是如何从gulpfile.js中的package.json文件中获取信息;例如,我想获取主页或名称并在任务中使用它。
答案 0 :(得分:134)
这不是特定的。
var p = require('./package.json')
p.homepage
更新:
请注意,“require”会缓存读取结果 - 这意味着您不能要求,写入文件,然后再次要求并期望更新结果。
答案 1 :(得分:106)
不要将require('./package.json')
用于观看流程。使用require
将解析模块作为第一个请求的结果。因此,如果您正在编辑package.json,那么除非您停止监视进程并重新启动它,否则这些编辑将无效。对于gulp监视进程,最好使用bitlinguist的方法,因为它将重新读取文件并在每次执行任务时解析它。
var fs = require('fs');
var json = JSON.parse(fs.readFileSync('./package.json'));
答案 2 :(得分:6)
这是一个很好的解决方案@Mangled Deutz。我自己第一次这样做但它没有用(回到那一秒),然后我尝试了这个解决方案:
# Gulpfile.coffee
requireJSON = (file) ->
fs = require "fs"
JSON.parse fs.readFileSync file
现在您应该看到这有点冗长(即使它有效)。 require('./package.json')
是最佳解决方案:
- 要添加' ./'在文件名前面。我知道它很简单,但它是require方法工作和不工作之间的区别。
答案 3 :(得分:0)
如果你从NPM触发gulp,就像使用" npm run build "什么
(这仅适用于NPM的gulp run触发器)
process.env.npm_package_ 对象
这应该由下划线分隔为更深的对象。
如果你想读取package.json中的一些特定配置,就像你想要读取你在package.json中创建的配置对象一样
scripts : {
build: gulp
},
config : {
isClient: false.
}
然后你可以使用
process.env.npm_package_**config_isClient**