Node.js
package.json
Recherche…
Remarques
Vous pouvez créer package.json
avec
npm init
qui vous demandera des informations de base sur vos projets, y compris l’ identificateur de licence .
Définition de base du projet
{
"name": "my-project",
"version": "0.0.1",
"description": "This is a project.",
"author": "Someone <[email protected]>",
"contributors": [{
"name": "Someone Else",
"email": "[email protected]"
}],
"keywords": ["improves", "searching"]
}
Champ | La description |
---|---|
prénom | un champ obligatoire pour un package à installer. Doit être en minuscule, un seul mot sans espaces. (Tirets et traits de soulignement autorisés) |
version | un champ obligatoire pour la version du package utilisant le contrôle de version sémantique . |
la description | une brève description du projet |
auteur | spécifie l'auteur du paquet |
contributeurs | un tableau d'objets, un pour chaque contributeur |
mots clés | un tableau de chaînes, cela aidera les personnes à trouver votre paquet |
Les dépendances
"dependencies": {"nom-module": "0.1.0"}
- exact :
0.1.0
va installer cette version spécifique du module. - Dernière version mineure :
^0.1.0
installera la version mineure la plus récente, par exemple0.2.0
, mais n'installera pas de module avec une version majeure supérieure, par exemple1.0.0
- Le dernier patch :
0.1.x
ou~0.1.0
installera la version la plus récente du patch disponible, par exemple0.1.4
, mais n'installe pas de module avec une version majeure ou mineure plus élevée, par exemple0.2.0
ou1.0.0
. - caractère générique :
*
installera la dernière version du module. - git repository : ce qui suit va installer une archive tar à partir de la branche principale d'un dépôt git. Un
#sha
,#tag
ou#branch
peut également être fourni:- GitHub :
user/project
ouuser/project#v1.0.0
- url :
git://gitlab.com/user/project.git
ougit://gitlab.com/user/project.git#develop
- GitHub :
- chemin local :
file:../lib/project
Après les avoir ajoutés à votre package.json, utilisez la commande npm install
dans le répertoire de votre projet dans le terminal.
devDependencies
"devDependencies": {
"module-name": "0.1.0"
}
Pour les dépendances requises uniquement pour le développement, comme le test des proxies de style ext. Ces dépendances dev ne seront pas installées lors de l'exécution de "npm install" en mode production.
Scripts
Vous pouvez définir des scripts pouvant être exécutés ou déclenchés avant ou après un autre script.
{
"scripts": {
"pretest": "scripts/pretest.js",
"test": "scripts/test.js",
"posttest": "scripts/posttest.js"
}
}
Dans ce cas, vous pouvez exécuter le script en exécutant l'une de ces commandes:
$ npm run-script test
$ npm run test
$ npm test
$ npm t
Scripts prédéfinis
Nom du script | La description |
---|---|
prépublication | Exécuter avant la publication du paquet |
publier, postpublier | Exécuter après la publication du package. |
préinstaller | Exécuter avant l'installation du package. |
installer, postinstaller | Exécuter après l'installation du package. |
preuninstall, désinstaller | Exécuter avant la désinstallation du package. |
post-install | Exécuter après la désinstallation du package. |
preversion, version | Exécuter avant de cogner la version du package. |
postversion | Exécuter après bump la version du package. |
prétest, test, post-test | Exécuter par la commande de npm test |
prestop, stop, poststop | Exécutée par la commande npm stop |
prestart, start, poststart | Exécuter par la commande de npm start |
prerestart, restart, postrestart | Exécuter par la commande npm restart |
Scripts définis par l'utilisateur
Vous pouvez également définir vos propres scripts de la même manière que vous le faites avec les scripts prédéfinis:
{
"scripts": {
"preci": "scripts/preci.js",
"ci": "scripts/ci.js",
"postci": "scripts/postci.js"
}
}
Dans ce cas, vous pouvez exécuter le script en exécutant l'une de ces commandes:
$ npm run-script ci
$ npm run ci
Les scripts définis par l'utilisateur prennent également en charge les scripts pré et post , comme le montre l'exemple ci-dessus.
Définition étendue du projet
Certains des attributs supplémentaires sont analysés par le site Web npm, comme le repository
, les bugs
ou la homepage
et affichés dans l'infobox pour ces paquets.
{
"main": "server.js",
"repository" : {
"type": "git",
"url": "git+https://github.com/<accountname>/<repositoryname>.git"
},
"bugs": {
"url": "https://github.com/<accountname>/<repositoryname>/issues"
},
"homepage": "https://github.com/<accountname>/<repositoryname>#readme",
"files": [
"server.js", // source files
"README.md", // additional files
"lib" // folder with all included files
]
}
Champ | La description |
---|---|
principale | Script d'entrée pour ce package. Ce script est renvoyé lorsqu'un utilisateur requiert le package. |
dépôt | Emplacement et type du référentiel public |
bogues | Bugtracker pour ce paquet (par exemple github) |
page d'accueil | Page d'accueil pour ce package ou le projet général |
des dossiers | Liste des fichiers et dossiers à télécharger lorsqu'un utilisateur effectue une npm install <packagename> |
Explorer le package.json
Un fichier package.json
, généralement présent dans la racine du projet, contient les métadonnées relatives à votre application ou à votre module, ainsi que la liste des dépendances à installer à partir de npm lors de l'exécution de npm install
.
Pour initialiser un package.json
tapez npm init
dans votre invite de commande.
Pour créer un package.json
avec des valeurs par défaut, utilisez:
npm init --yes
# or
npm init -y
Pour installer un package et l'enregistrer dans package.json
utilisez:
npm install {package name} --save
Vous pouvez également utiliser la notation abrégée:
npm i -S {package name}
Alias NPM -S
à --save
et -D
à --save-dev
pour enregistrer respectivement dans vos dépendances de production ou de développement.
Le paquet apparaîtra dans vos dépendances; Si vous utilisez --save-dev
au lieu de --save
, le paquet apparaîtra dans vos devDependencies.
Propriétés importantes de package.json
:
{
"name": "module-name",
"version": "10.3.1",
"description": "An example module to illustrate the usage of a package.json",
"author": "Your Name <[email protected]>",
"contributors": [{
"name": "Foo Bar",
"email": "[email protected]"
}],
"bin": {
"module-name": "./bin/module-name"
},
"scripts": {
"test": "vows --spec --isolate",
"start": "node index.js",
"predeploy": "echo About to deploy",
"postdeploy": "echo Deployed",
"prepublish": "coffee --bare --compile --output lib/foo src/foo/*.coffee"
},
"main": "lib/foo.js",
"repository": {
"type": "git",
"url": "https://github.com/username/repo"
},
"bugs": {
"url": "https://github.com/username/issues"
},
"keywords": [
"example"
],
"dependencies": {
"express": "4.2.x"
},
"devDependencies": {
"assume": "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"
},
"peerDependencies": {
"moment": ">2.0.0"
},
"preferGlobal": true,
"private": true,
"publishConfig": {
"registry": "https://your-private-hosted-npm.registry.domain.com"
},
"subdomain": "foobar",
"analyze": true,
"license": "MIT",
"files": [
"lib/foo.js"
]
}
Informations sur certaines propriétés importantes:
name
Le nom unique de votre package et devrait être en minuscule. Cette propriété est requise et votre package ne sera pas installé sans lui.
- Le nom doit être inférieur ou égal à 214 caractères.
- Le nom ne peut pas commencer par un point ou un trait de soulignement.
- Les nouveaux paquets ne doivent pas comporter de majuscules dans le nom.
version
La version du package est spécifiée par Semantic Versioning (semver). Ce qui suppose qu'un numéro de version est écrit en tant que MAJOR.MINOR.PATCH et que vous incrémentez le:
- Version MAJOR lorsque vous apportez des modifications incompatibles à l'API
- Version MINOR lorsque vous ajoutez des fonctionnalités de manière rétrocompatible
- Version PATCH lorsque vous apportez des corrections de bogues rétro-compatibles
description
La description du projet. Essayez de le garder court et concis.
author
L'auteur de ce paquet.
bin
Un objet utilisé pour exposer des scripts binaires de votre package. L'objet suppose que la clé est le nom du script binaire et la valeur un chemin d'accès relatif au script.
Cette propriété est utilisée par les packages contenant une interface de ligne de commande (CLI).
script
Un objet qui expose des commandes npm supplémentaires. L'objet suppose que la clé est la commande npm et que la valeur est le chemin du script. Ces scripts peuvent être exécutés lorsque vous exécutez npm run {command name}
ou npm run-script {command name}
.
Les packages contenant une interface de ligne de commande et installés localement peuvent être appelés sans chemin relatif. Ainsi , au lieu d'appeler ./node-modules/.bin/mocha
vous pouvez appeler directement mocha
.
main
Le point d'entrée principal de votre forfait. Lors de l'appel de require('{module name}')
dans le noeud, ce sera le fichier réel requis.
Il est fortement recommandé que le fait de demander le fichier principal ne génère aucun effet secondaire. Par exemple, exiger que le fichier principal ne démarre pas un serveur HTTP ou ne se connecte pas à une base de données. Au lieu de cela, vous devriez créer quelque chose comme exports.init = function () {...}
dans votre script principal.
keywords
Un tableau de mots-clés décrivant votre package. Cela aidera les gens à trouver votre paquet.
devDependencies
Ce sont les dépendances qui sont uniquement destinées au développement et aux tests de votre module. Les dépendances seront installées automatiquement à moins que la variable d'environnement de NODE_ENV=production
ait été définie. Si tel est le cas, vous pouvez toujours utiliser ces paquetages avec npm install --dev
peerDependencies
Si vous utilisez ce module, peerDependencies répertorie les modules à installer avec celui-ci. Par exemple, moment-timezone
doit être installé à côté de l' moment
car il s'agit d'un plugin pour l'instant, même s'il ne require("moment")
pas directement require("moment")
.
preferGlobal
Une propriété qui indique que cette page préfère être installée globalement à l'aide de npm install -g {module-name}
. Cette propriété est utilisée par les packages contenant une interface de ligne de commande (CLI).
Dans toutes les autres situations, vous ne devez PAS utiliser cette propriété.
publishConfig
Le publishConfig est un objet avec des valeurs de configuration qui seront utilisées pour la publication des modules. Les valeurs de configuration définies remplacent votre configuration npm par défaut.
L'utilisation la plus courante de publishConfig
consiste à publier votre package dans un registre privé npm, ce qui vous permet de bénéficier des avantages de npm, à l'exception des packages privés. Cela se fait simplement en définissant l'URL de votre npm privé comme valeur pour la clé de registre.
files
Ceci est un tableau de tous les fichiers à inclure dans le package publié. Un chemin de fichier ou un chemin de dossier peut être utilisé. Tout le contenu d'un chemin de dossier sera inclus. Cela réduit la taille totale de votre package en incluant uniquement les fichiers corrects à distribuer. Ce champ fonctionne conjointement avec un fichier de règles .npmignore
.