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?
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
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.)
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!
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.
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
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
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.
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.
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
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 .
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.
Vous devez utiliser git et GitHub pour utiliser generate-package.
Par exemple, je crée un dossier vide _sasha-npm-init-vs-generate-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"
]
}
_
_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
_.
Cela crée votre propre modèle _package.json
_, voir génère et yeoman exemples.