web-dev-qa-db-fra.com

Javascript: obtenir les données package.json dans gulpfile.js

Pas une question spécifique à un groupe, mais comment obtenir des informations à partir du fichier package.json dans le fichier gulpfile.js; Par exemple, je veux obtenir la page d'accueil ou le nom et l'utiliser dans une tâche.

93
Lane

N'utilisez pas require('./package.json') pour un processus de surveillance. Utiliser require résoudra le module en tant que résultat de la première requête. Donc, si vous modifiez votre package.json, ces modifications ne fonctionneront que si vous arrêtez votre processus de surveillance et le redémarrez. Pour un processus de surveillance en creux, il serait préférable d'utiliser la méthode de bitlinguist, qui relira le fichier et l'analysera à chaque fois que votre tâche sera exécutée.

var fs = require('fs');

var json = JSON.parse(fs.readFileSync('./package.json'));
104
hapticdata

Ce n'est pas gulp spécifique.

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

METTRE À JOUR:

Sachez que "require" mettra en cache les résultats de lecture - ce qui signifie que vous ne pouvez pas en demander, écrivez dans le fichier, puis recommencez et attendez-vous à une mise à jour des résultats.

132
Mangled Deutz

C'est une bonne solution @Mangled Deutz. J'ai moi-même d'abord fait cela, mais cela n'a pas fonctionné (retour à cela dans une seconde), puis j'ai essayé cette solution:

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

Maintenant, vous devriez voir que c'est un peu verbeux (même si cela a fonctionné). require('./package.json') est la meilleure solution:

Pointe

-remember pour ajouter './' devant le nom du fichier. Je sais que c'est simple, mais c'est la différence entre la méthode d'exigence qui fonctionne et celle qui ne fonctionne pas. 

6
dewwwald

Si vous déclenchez une rafale de NPM, utilisez " npm run build " ou quelque chose comme ça. 

(Cela ne fonctionne que pour les déclenchements de gulp par NPM)

process.env.npm_package _Object 

ceci devrait être séparé par un tiret bas pour les objets plus profonds. 

si vous voulez lire une configuration spécifique dans package.json comme vous voulez lire l'objet de configuration que vous avez créé dans package.json

scripts : {
   build: gulp 
},
config : {
   isClient: false.
}

alors vous pouvez utiliser 

process.env.npm_package_**config_isClient**
0
Manasvi Sareen