【发布时间】:2014-05-03 22:58:01
【问题描述】:
本身不是一个特定于 gulp 的问题,而是如何从 gulpfile.js 中的 package.json 文件中获取信息;例如,我想获取主页或名称并在任务中使用它。
【问题讨论】:
标签: javascript gulp
本身不是一个特定于 gulp 的问题,而是如何从 gulpfile.js 中的 package.json 文件中获取信息;例如,我想获取主页或名称并在任务中使用它。
【问题讨论】:
标签: javascript gulp
这不是 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 方法工作和不工作之间的区别。
【讨论】:
不要将require('./package.json') 用于监视进程,因为使用require 会将模块解析为第一个请求的结果。
因此,如果您正在编辑 package.json,除非您停止监视进程并重新启动,否则这些编辑将不起作用。
对于 gulp watch 进程,最好在每次执行任务时重新读取文件并解析它,使用node's fs method
var fs = require('fs')
var json = JSON.parse(fs.readFileSync('./package.json'))
【讨论】:
require 并使用delete require.cache[require.resolve(FILEPATH)]; 删除缓存
如果你是从 NPM 触发 gulp,比如使用“npm run build”或其他东西
(这仅适用于 NPM 的 gulp 运行触发器)
process.env.npm_package_对象
这应该用下划线分隔以用于更深的对象。
如果您想读取 package.json 中的某些特定配置,就像您想读取您在 package.json 中创建的配置对象一样
scripts : {
build: gulp
},
config : {
isClient: false.
}
那么你可以使用
process.env.npm_package_**config_isClient**
【讨论】: