【问题标题】:Javascript: get package.json data in gulpfile.jsJavascript:在 gulpfile.js 中获取 package.json 数据
【发布时间】:2014-05-03 22:58:01
【问题描述】:

本身不是一个特定于 gulp 的问题,而是如何从 gulpfile.js 中的 package.json 文件中获取信息;例如,我想获取主页或名称并在任务中使用它。

【问题讨论】:

    标签: javascript gulp


    【解决方案1】:

    这不是 gulp 特有的。

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

    更新:

    请注意,“require”将缓存读取结果 - 这意味着您不能要求,写入文件,然后再次要求并期望结果被更新。

    【讨论】:

    • 当我看到你的回答时,我绝对觉得自己像个白痴一样搜索这个。当然!
    • 为我工作:P。对于关于缓存的评论 +1,我后来切换到使用 'fs.readFileSync()`,如下所述。
    • @spikeheap 我不知道在阅读 StackOverflow 上的评论之前我是否曾大声笑过,但我和你是对的!谢谢你的欢呼。哈哈。
    【解决方案2】:

    这是一个很好的解决方案@Mangled Deutz。我自己先是这样做的,但它没有用(稍后回到那个),然后我尝试了这个解决方案:

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

    现在您应该看到这有点冗长(尽管它有效)。 require('./package.json') 是最好的解决方案:

    提示

    -记得在文件名前加上'./'。我知道它很简单,但它是 require 方法工作和不工作之间的区别。

    【讨论】:

    • 谢谢!这帮助很大。
    • 感谢点赞,终于有cmets了。 :) 很高兴它对你有所帮助。
    【解决方案3】:

    不要将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”确实缓存了结果(如果您打算阅读/修改/再次阅读,则不适合)。不过,这并不是在所有情况下都是一个糟糕的解决方案。 OP 明确提到他想从中读取信息。
    • 可以使用require 并使用delete require.cache[require.resolve(FILEPATH)]; 删除缓存
    • @KennethB 为什么不作为单独的答案?会带来足够多的支持。
    【解决方案4】:

    如果你是从 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**
    

    【讨论】:

      猜你喜欢
      • 2017-10-02
      • 2022-12-19
      • 2017-04-09
      • 2022-11-27
      • 2020-02-25
      • 2016-05-12
      • 2015-05-21
      • 2021-01-02
      • 2010-10-30
      相关资源
      最近更新 更多