web-dev-qa-db-fra.com

Est-il possible de créer automatiquement le fichier package.json pour les projets Node.js?

Est-ce que package.json est censé être édité manuellement? Un programme comme npm ne pourrait-il pas simplement parcourir les fichiers, consulter les instructions "require", puis s’en servir pour mettre les entrées nécessaires dans le fichier package.json? Est-ce qu'il y a des programmes comme ça?

390
neuromancer

Le fichier package.json est utilisé par npm pour en savoir plus sur votre projet node.js.

Utilisez npm init pour générer les fichiers package.json pour vous!

Il est livré avec NPM. Lisez sa documentation ici: https://docs.npmjs.com/cli/init

En outre, il existe un outil officiel que vous pouvez utiliser pour générer ce fichier par programme: https://github.com/npm/init-package-json

583
Ore4444

Tout d'abord, courir

npm init

... vous posera quelques questions ( lisez ceci en premier ) sur votre projet/package, puis génère un fichier package.json pour vous.

Ensuite, une fois que vous avez un fichier package.json, utilisez

npm install <pkg> --save

ou

npm install <pkg> --save-dev

... pour installer une dépendance et l'ajouter automatiquement à votre liste package.json 'dependencies.

(Remarque: vous devrez peut-être modifier manuellement les plages de versions de vos dépendances.)

200
nzondlo

Je viens d'écrire un script simple pour collecter les dépendances dans ./node_modules. Cela répond à mes besoins pour le moment. Cela peut aider d’autres, je le poste ici.

var fs = require("fs");

function main() {
  fs.readdir("./node_modules", function (err, dirs) {
    if (err) {
      console.log(err);
      return;
    }
    dirs.forEach(function(dir){
      if (dir.indexOf(".") !== 0) {
        var packageJsonFile = "./node_modules/" + dir + "/package.json";
        if (fs.existsSync(packageJsonFile)) {
          fs.readFile(packageJsonFile, function (err, data) {
            if (err) {
              console.log(err);
            }
            else {
              var json = JSON.parse(data);
              console.log('"'+json.name+'": "' + json.version + '",');
            }
          });
        }
      }
    });

  });
}

main();

Dans mon cas, le script ci-dessus génère:

"colors": "0.6.0-1",
"commander": "1.0.5",
"htmlparser": "1.7.6",
"optimist": "0.3.5",
"progress": "0.1.0",
"request": "2.11.4",
"soupselect": "0.2.0",   // Remember: remove the comma character in the last line.

Maintenant, vous pouvez les copier et les coller. S'amuser!

171
douyw

npm init

pour créer le fichier package.json et que vous utilisiez ensuite

ls node_modules/ | xargs npm install --save

pour remplir les modules que vous avez dans le dossier node_modules.

Edit: @paldepind a souligné que la seconde commande est redondante car npm init ajoute désormais automatiquement ce que vous avez dans votre dossier node_modules /. Je ne sais pas si cela a toujours été le cas, mais maintenant au moins, cela fonctionne sans la deuxième commande.

79
Pylinux

Ligne de commande :

npm init

créera le fichier package.json

Pour installer, mettre à jour et désinstaller des packages sous dépendances dans le fichier package.json:

Ligne de commande :

npm install <pkg>@* --save 

ajoutera automatiquement la dernière version du paquet sous dépendances dans le fichier package.json

EX:

npm install node-markdown@* --save

Ligne de commande :

npm install <pkg> --save

va également ajouter automatiquement la dernière version du paquet sous dépendances dans le fichier package.json

Si vous avez besoin d'une version spécifique pour un paquet, utilisez ceci Ligne de commande :

npm install <pkg>@<version> --save

ajoutera automatiquement une version spécifique du paquet sous dépendances dans le fichier package.json

EX:

npm install [email protected] --save

if vous avez besoin d'une plage de version spécifique pour qu'un paquet utilise cette ligne de commande :

npm install <pkg>@<version range>

ajoutera automatiquement la dernière version du paquet entre les plages de version sous dépendances dans le fichier package.json

EX:

npm install koa-views@">1.0.0 <1.2.0" --save

For plus de détails sur la façon d'écrire la version du paquet npm Doc

Ligne de commande :

npm update --save

mettra à jour les packages dans le fichier package.json et ajoutera automatiquement la version mise à jour de tous les packages sous dépendances dans le fichier package.json

Ligne de commande :

npm uninstall <pkg> --save

supprimera automatiquement le package des dépendances dans le fichier package.json et supprimera le package du dossier node_module

24
ahmed hamdy

Lancer npm init -y rend votre package.json avec toutes les valeurs par défaut.
Vous pouvez alors changer package.json en conséquence
Cela fait gagner un temps considérable en empêchant d’appuyer sur enter sur chaque commande de npm init

14
Abhinav Singi

Vous pouvez maintenant utiliser Yeoman - Outil d’échafaudage d’applications Web moderne sur un terminal de nœud en 3 étapes simples.

Tout d'abord, vous devez installer yo et les autres outils requis:

$ npm install -g yo bower grunt-cli gulp

Pour échafauder une application Web, installez le générateur generator-webapp :

$ npm install -g generator-webapp  // create scaffolding 

Run yo et ... vous avez tous terminé:

$ yo webapp  // create scaffolding 

Yeoman peut écrire du code standard pour l’ensemble de votre application Web ou pour les contrôleurs et modèles. Il peut déclencher un serveur Web de prévisualisation en direct pour les éditions et la compilation; Non seulement vous pouvez également exécuter vos tests unitaires, minimiser et concaténer votre code, optimiser les images, etc.

Yeoman (yo) - outil d'échafaudage offrant un écosystème d'échafaudages spécifiques au cadre, appelés générateurs, pouvant être utilisés pour effectuer certaines des tâches fastidieuses mentionnées précédemment.

Grunt / gulp - utilisé pour créer, prévisualiser et tester votre projet.

Bower - est utilisé pour la gestion des dépendances afin que vous n'ayez plus à télécharger manuellement vos bibliothèques front-end.

6
Adesh M

Basé sur la réponse de Pylinux, voici une solution pour Windows OS,

dir node_modules > abc.txt
FOR /F %k in (abc.txt) DO npm install --save

J'espère que ça aide.

5
Anmol Saraf

utilisez la commande npm init -f pour générer le fichier package.json, puis utilisez --save après chaque commande pour que chaque module soit automatiquement mis à jour dans votre package.json pour ex: npm install express --save

1
Nitin Nodiyal

1. choix

Si vous git et utilisateur GitHub:

generate-package plus simplement que _npm init_.

else

et/ou vous n'aimez pas le modèle _package.json_, qui génère un package ou _npm init_:

vous pouvez générer votre propre modèle via des applications d'échafaudage en tant que générer , voiles ou yeoman .


2. Pertinence

Cette réponse est pertinente pour mars 2018. À l'avenir, les données de cette réponse pourraient être obsolètes.

Auteur de cette réponse a personnellement utilisé generate-package à mars 2018.


3. Limites

Vous devez utiliser git et GitHub pour utiliser generate-package.


4. démonstration

Par exemple, je crée un dossier vide _sasha-npm-init-vs-generate-package_.

4.1. générer-package

Commander:

_D:\SashaDemoRepositories\sasha-npm-init-vs-generate-package>gen package
[16:58:52] starting generate
[16:59:01] √ running tasks: [ 'package' ]
[16:59:04] starting package
? Project description? generate-package demo
? Author's name? Sasha Chernykh
? Author's URL? https://vk.com/hair_in_the_wind
[17:00:19] finished package √ 1m
_

_package.json_:

_{
  "name": "sasha-npm-init-vs-generate-package",
  "description": "generate-package demo",
  "version": "0.1.0",
  "homepage": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package",
  "author": "Sasha Chernykh (https://vk.com/hair_in_the_wind)",
  "repository": "Kristinita/sasha-npm-init-vs-generate-package",
  "bugs": {
    "url": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package/issues"
  },
  "license": "MIT",
  "engines": {
    "node": ">=4"
  },
  "scripts": {
    "test": "mocha"
  },
  "keywords": [
    "generate",
    "init",
    "npm",
    "package",
    "sasha",
    "vs"
  ]
}
_

4.2. npm init

_D:\SashaDemoRepositories\sasha-npm-init-vs-generate-package>npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (sasha-npm-init-vs-generate-package)
version: (1.0.0) 0.1.0
description: npm init demo
entry point: (index.js)
test command: mocha
git repository: https://github.com/Kristinita/sasha-npm-init-vs-generate-package
keywords: generate, package, npm, package, sasha, vs
author: Sasha Chernykh
license: (ISC) MIT
About to write to D:\SashaDemoRepositories\sasha-npm-init-vs-generate-package\package.json:

{
  "name": "sasha-npm-init-vs-generate-package",
  "version": "0.1.0",
  "description": "npm init demo",
  "main": "index.js",
  "scripts": {
    "test": "mocha"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/Kristinita/sasha-npm-init-vs-generate-package.git"
  },
  "keywords": [
    "generate",
    "package",
    "npm",
    "package",
    "sasha",
    "vs"
  ],
  "author": "Sasha Chernykh",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package/issues"
  },
  "homepage": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package#readme"
}


Is this ok? (yes) y
_
_{
  "name": "sasha-npm-init-vs-generate-package",
  "version": "0.1.0",
  "description": "npm init demo",
  "main": "index.js",
  "scripts": {
    "test": "mocha"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/Kristinita/sasha-npm-init-vs-generate-package.git"
  },
  "keywords": [
    "generate",
    "package",
    "npm",
    "package",
    "sasha",
    "vs"
  ],
  "author": "Sasha Chernykh",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package/issues"
  },
  "homepage": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package#readme"
}
_

Je pense que _generate-package_ plus simplement, _npm init_.


5. Personnalisation

Cela crée votre propre modèle _package.json_, voir génère et yeoman exemples.

0