Javascript: get package.json data in gulpfile.js

JavascriptGulp

Javascript Problem Overview


Not a gulp-specific question per-se, but how would one get info from the package.json file within the gulpfile.js; For instance, I want to get the homepage or the name and use it in a task.

Javascript Solutions


Solution 1 - Javascript

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.

Solution 2 - Javascript

Don't use require('./package.json') for a watch process, as using require will resolve the module as the results of the first request.

So if you are editing your package.json those edits won't work unless you stop your watch process and restart it.

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

var fs = require('fs')
var json = JSON.parse(fs.readFileSync('./package.json'))

Solution 3 - Javascript

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:

Tip

-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.

Solution 4 - Javascript

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**

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionLaneView Question on Stackoverflow
Solution 1 - JavascriptMangled DeutzView Answer on Stackoverflow
Solution 2 - JavascripthapticdataView Answer on Stackoverflow
Solution 3 - JavascriptdewwwaldView Answer on Stackoverflow
Solution 4 - JavascriptManasvi SareenView Answer on Stackoverflow