package.json
. Cet article vous présentera le fichier package.json. J'espère qu'il vous sera utile ! Comprendre package.json
Sous le répertoire racine de chaque projet (package téléchargé depuis npm, ou d'autres projets nodejs), se trouve généralement un fichier package.json, qui définit les différents modules requis pour le projet, ainsi que les informations de configuration du projet ( Métadonnées telles que le nom, la version, la licence, comment démarrer le projet, exécuter des scripts, etc.). La commande npm install
télécharge automatiquement les modules requis en fonction de ce fichier de configuration.
Le fichier package.json
est un objet JSON et chaque membre de l'objet est un paramètre du projet en cours. Par exemple, name
est le nom du projet version
est la version (en suivant le format « version majeure.version mineure.version mineure »). Il jouera également plusieurs rôles dans le cycle de vie du projet, notamment le développement, les tests et les versions en ligne.
package.json fonctionne
Comment créer package.json
1. Utilisez l'outil de ligne de commande client CLI
npm init
Cela lancera le questionnaire de ligne de commande, qui créera package.json
dans le répertoire où vous avez démarré la commande.
Entrée frontale (vue) au cours de maîtrise : entrez dans l'apprentissage
2. Créez une valeur par défaut
Pour obtenir la valeur par défaut package.json
, veuillez exécuter npm init
avec --yes
ou -y
:
npm init -y
Cette méthode utilisera package.json
à partir de l'actuel. Les informations extraites du répertoire génèrent des valeurs par défaut, en sautant l'étape de réponse aux questions.
3. Créez manuellement
un nouveau fichier package.json directement dans le répertoire racine du projet, puis saisissez le contenu approprié. Veuillez consulter les notes sur package.json ci-dessous pour plus de détails.
Explication détaillée des champs courants dans les fichiers package.json
1. Le nom
est un champ obligatoire, qui est le nom du module/package actuel. La longueur doit être inférieure ou égale à 214 caractères. Il ne peut pas commencer par "." ) ou "_" (trait de soulignement) et ne peut pas contenir de lettres majuscules.
Ce nom peut être passé en paramètre à require(), il doit donc être court, mais toujours significatif.
2. La version
est un champ obligatoire, le numéro de version du package actuel, la valeur par défaut est
1.0.0
lors de sa première création.
la version doit pouvoir être résolue par un module nœud-semver dont dépend npm. Définit la progression de l’itération de version du projet en cours. (Suivez le format "version majeure. version mineure. version mineure")
Peut-être que de nombreux amis ne font plus attention ou ne se soucient pas du numéro de version et préfèrent utiliser le numéro de version du produit, ou le git méthode de hashcode.
3. Le
champ facultatif de description doit être une chaîne. Les informations de description du package actuel sont une chaîne. Cela aide les gens à trouver le package lorsqu'ils utilisent la recherche npm.
S'il n'y a aucune information description
dans package.json, npm utilise la première ligne de README.md dans le projet comme informations de description. Ces informations de description aideront les autres à rechercher votre projet, il est donc recommandé de bien rédiger description
.
4. Le
champ facultatif principal spécifie le fichier d'entrée pour le chargement du projet.
La valeur par défaut de ce champ est index.js
sous le répertoire racine du module.
5. Le
champ facultatif
scripts
est un objet de hachage composé de commandes de script. Elles sont exécutées dans différents cycles de vie du package. La clé est l'événement du cycle de vie et la valeur est la commande à exécuter. Spécifie l'abréviation de la ligne de commande npm pour exécuter la commande de script. Par exemple, start spécifie la commande à exécuter lors de l'exécution de npm run start. Nous pouvons personnaliser la commande avec laquelle nous voulons exécuter le script.
Référence : http://www.ruanyifeng.com/blog/2016/10/npm_scripts.html
script d'exécution de configuration des scripts
1) Exécutez la commande echo xxx
Pourquoi peut-il être exécuté ?
Lorsque j'exécute npm run, un nouveau Shell sera automatiquement créé et la commande de script spécifiée sera exécutée dans ce Shell. Par conséquent, tant que la commande peut être exécutée par Shell (généralement Bash), elle peut être écrite dans le script npm. copiera également node_modules/.bin dans le répertoire courant vers le chemin du système actuel (il ne s'agit que d'une copie temporaire. Une fois l'exécution terminée, la variable PATH sera restaurée à son état d'origine), donc tous les scripts du node_modules Sous-répertoire /.bin du répertoire courant, All peut être appelé directement en utilisant le nom du script sans ajouter de chemin.
Par exemple :
si nous utilisons node pour exécuter un service node.js, node + 文件
peut utiliser node server.js
; nous pouvons également utiliser webpack pour empaqueter le fichier frontal, webpack-dev-server
. webpack-dev-server doit être installé. Modules dépendants
: { "build": "webpack --mode=développement", "dev": "webpack-dev-server --mode=development --contentBase=./dist", "serveur": "noeud app.js" }
Nous entrons npm run server
dans l'outil de ligne de commande, et node app.js sera appelé pour nous aider à l'exécuter.
Forme courte :
npm start est npm run start npm stop est l'abréviation de npm run stop npm test est l'abréviation de npm run test npm restart est l'abréviation de npm run stop && npm run restart && npm run start
Scripts couramment utilisés ----- Transfert de collection en ligne
// Supprimer le répertoire "clean": "rimraf dist/*", // Construire un service HTTP "serve" localement : "http-server -p 9090 dist/", //Ouvrez le navigateur "open:dev": "opener http://localhost:9090", //Actualiser "livereload" en temps réel : "live-reload --port 9091 dist/", // Construire le fichier HTML "build:html": "jade index.jade > dist/index.html", // Tant que le fichier CSS change, réexécutez le build "watch:css": "watch 'npm run build:css' assets/styles/", // Tant que le fichier HTML change, réexécutez le build "watch:html": "watch 'npm run build:html' assets/html", //Déployer sur Amazon S3 "deploy:prod": "s3-cli sync ./dist/ s3://example-com/prod-site/", // Créer une icône de favori "build:favicon": "scripts de noeud/favicon.js", "start": "cross-env NODE_ENV=production node server/index.js",
6. dependencies et devDependencies
sont des champs facultatifs. Le champ
dependencies
spécifie les modules dont dépend le projet etdevDependencies
spécifie les modules requis pour le développement du projet.
La valeur pointe vers un objet. Chaque membre de cet objet se compose du nom du module et de l'exigence de version correspondante, indiquant le module dépendant et sa plage de versions.
Il n'y a pas de package.json créé par défaut, il sera généré lorsque nous installerons npm install
un module.
npm installer express npm install express --save npm install express --save-dev
Le code ci-dessus signifie installer le module express séparément
dependencies
.--save-dev
signifie écrire le module --save
dependencies
devDependencies
7.
Champ facultatif bundledDependencies, autres dépendances empaquetées en même temps lors de la publication du package.
8. Champ facultatif peerDependencies
, dépendance de compatibilité, si votre projet ou module dépend d'un autre module en même temps, mais que la version dont il dépend est différente.
Par exemple, votre projet dépend de la version 1.0 du module A et du module B, et le module A lui-même dépend de la version 2.0 du module B.
{ "name": "chai-comme-promis", "dépendances entre pairs": { "chai": "1.x" } }
Le code ci-dessus spécifie que lors de l'installation du module chai-as-promised
, le programme principal chai
doit être installé ensemble et la version chai
doit être 1.x
Si la dépendance spécifiée par votre projet est la version 2.0 de chai
, une erreur sera signalée.
9. Champ facultatif Bin
Le champ bin permet de préciser l'emplacement du fichier exécutable correspondant à chaque commande interne.
Créez le fichier /bin/www dans le répertoire racine du projet
# !Configurez
"bin"dans
/usr/bin/env nodepackage.json : {
"lee-cli": ./bin/www" }
npm link
ajoute le chemin de valeur de l'attribut bin dans le package à un lien global, crée une connexion de raccourci et
exécute lee-cli
sur la ligne de commande pour exécuter le fichier bin/www. Le processus est le suivant :
Dans l'exemple ci-dessus, www créera un lien symbolique node_modules/.bin/www
. Étant donné que le répertoire node_modules/.bin/
sera ajouté à la variable PATH du système au moment de l'exécution, ces scripts peuvent être appelés directement via des commandes sans chemin lors de l'exécution de npm.
10. config
Le champ config est utilisé pour afficher des valeurs dans les variables d'environnement
{ "nom" : "paquet", "config" : { "port" : "8080" }, "scripts" : { "start" : "node server.js" } }
Si nous voulons le modifier, nous pouvons utiliser
npm config set package:port 80
11. Le
champ facultatif des moteurs spécifie la version de la plate-forme sur laquelle le module s'exécute, comme une certaine version de Node ou un navigateur. Vous pouvez également spécifier le. version
npm
applicable.
"moteurs" : { "nœud" : ">=0.10.3 <0.12" }
12. Champ facultatif Licence
, indiquant la définition de la licence applicable au code décrit dans package.json. Différents protocoles ont des restrictions différentes. Informez les utilisateurs de quelles autorisations ils disposent pour utiliser votre module et quelles restrictions s'appliquent à son utilisation.
Veuillez vous référer à : Choosealicense.com/ pour choisir une licence.
Par exemple : MIT : autorisation maximale, d'autres peuvent modifier votre code après l'avoir téléchargé, valeur d'installation par défaut.
13.Champ optionnel
Auteur
, développeur de projet.14.
Champ facultatif privé, valeur booléenne, si privé Lorsqu'il est défini sur true, npm refuse de publier.
C'est un moyen d'empêcher que des packages privés soient divulgués à des tiers. Si vous souhaitez encapsuler un package à publier uniquement dans un registre spécifique (par exemple, un registre interne), vous pouvez utiliser la description du dictionnaire publiConfig ci-dessous pour remplacer les paramètres de configuration du registre au moment de la publication.
15. Le
champ facultatif des mots-clés, mots-clés du projet, est un tableau de chaînes. Cela aide les gens à trouver le package lorsqu'ils utilisent la recherche npm.
16. Le
champ facultatif os spécifie le système d'exploitation sur lequel le module peut s'exécuter.
17.
style style spécifie l'emplacement du fichier de style lorsqu'il est utilisé par le navigateur.
18.
Le type d'endroit où le code du package du référentiel est stocké peut être git ou svn peut être sur Github
19. Le
champ facultatif de la page d'accueil n'a pas d'URL avec des préfixes de protocole tels que http://.
Problème de version :
version : "1.0.0"
1.0.0 :
le changement du premier chiffre signifie : incompatibilité avec l'ancien code, mise à jour à grande échelle, nouvelle version ;
le deuxième chiffre signifie : certaines fonctions ont été ajoutées, compatibilité ascendantele troisième
;chiffre
signifie : certaines fonctions ont été ajoutées, bit de compatibilité ascendante
signifie : petits correctifs, corrections de bugs ;
lorsque nous publions le projet, nous utilisons npm + git
npm version patch
(patch patch). Cela changera le troisième chiffre de la version. ; utilisez git tag
pour l'exécuter et il sera automatiquement dans git. npm version minor
pour modifier le deuxième chiffre du numéro de version ;npm version major
pour modifier le premier chiffre du numéro de version ; ;version npm [<nouvelle version> | majeur | mineur | pré-version préliminaire | major : numéro de version majeure mineur : numéro de version mineur patch : numéro de patch premajor : version majeure préliminaire prepatch : version mineure préliminaire avant-première : version préliminaire
ps : Remarque, si une erreur est signalée : le répertoire de travail Git n'est pas propre, cela signifie que vous j'ai besoin que git status
soit nettoyé maintenant.
git ajouter . git commit -m "package.json explication détaillée"
npm versin monir -m"增加版本号"
git push -u origin master
Comment formuler des règles ?
En tant qu'utilisateurs, nous pouvons indiquer dans le fichier package.json combien de mises à jour nous pouvons accepter pour ce package (en supposant que nous nous appuyons actuellement sur la version 1.2.4) :
Si nous avons uniquement l'intention d'accepter les mises à jour de la version du correctif (c'est-à-dire, le dernier changement de chiffre), vous pouvez l'écrire comme ceci :
1.2 1.2.x ~1.2.4
Si vous acceptez les mises à jour de version mineures (changements en deuxième position), vous pouvez écrire comme ceci :
1 1.x ^1.2.4
Si vous pouvez accepter les mises à jour de version majeures (accepter naturellement les modifications mineures de version et de correctif), vous pouvez écrire comme ceci :
*x
Pour résumer : il existe trois types de changements de version, quel type de mise à jour des packages dépendants est accepté ? Écrivez le numéro de version avec précision au chiffre précédent.
Cycle et étapes de version :
Par exemple :
2.1.0-beta.1
est généralement utilisé par des utilisateurs comme celui-ci. Ce genre de chose ne sera pas installé. Ce type peut être utilisé par l'intérieur et les testeurs.
Exemples | de |
---|---|
du package | de dépendances |
~ | 1.2.3 version majeure + version mineure + version du correctif ; 1.2.3 <= version < 1.3.0 ; ~ 1.2 version majeure + version mineure ; 1.2.0 <= version < 1.3 |
. | version majeure ; 1.0.0 <= version < 2.0.0 |
Description | de la plage de versions | de l'instance | de symbole |
---|---|---|---|
1.0.0 | 1.0.0 | est verrouillé sur la version 1.0.0 et doit être cette version. | |
^ correspondra au dernier package de dépendances de grande version | ^1.2.3, ^0.2.3 | >=1.2.3 <2.0.0, >=0.2.3 <0.3.0 | signifie installer la dernière version de 1.xx (pas inférieure à 1.2 .3, y compris 1.3.0), mais 2.xx ne sera pas installé, ce qui signifie que le numéro de version majeure ne sera pas modifié lors de l'installation. Il convient de noter que si le numéro de version majeure est 0, le curseur se comporte de la même manière que le tilde. En effet, il est encore en phase de développement et même des modifications mineures du numéro de version peuvent entraîner une incompatibilité du programme. (Version principale) |
~ correspondra au dernier package de dépendances de version mineure | ~1.2.3 | >=1.2.3 <1.3.0 | signifie installer la dernière version de 1.2.x (pas inférieure à 1.2.3), mais pas installer 1.3.x . Autrement dit, le numéro de version majeure et le numéro de version mineure ne seront pas modifiés lors de l'installation. |
>= | >=2.1.0 | >=2.1.0 | supérieur ou égal à 2.1.0 |
<= | <=2.0.0 | <=2.0.0 | inférieur ou égal à 2.0.0 |
dernier | Installez la dernière version | ||
* | >=0.0.0 | toute version | |
- | 1.2.3 - 2.3.4 | >=1.2.3 <=2.3.4 |
Faire la différence entre l'installation Dependencies
et dependencies
?
devDependencies
sont des modules requis pour le développement, nous pouvons donc les installer selon nos besoins pendant le processus de développement pour améliorer notre efficacité de développement, comme certaines bibliothèques tierces bien connues, webpack
, rollUp
, less
, babel
, etc. Il n'est pas nécessaire de l'installer dans l'environnement de production.
Il est recommandé d'installer les bibliothèques suivantes dans devDependencies
:
package de dépendances (spécifier, mettre à jour, local, utiliser, désinstaller)
1. Installer le package de dépendances local
npm install jquery
Cette commande créez un dans le répertoire node_modules
du répertoire actuel, puis téléchargez le package que nous avons spécifié dans ce répertoire.
2. Pour spécifier la version d'installation, vous pouvez @版本号
après le nom du package.
Si le nom d'un package commence par package @
, il s'agit d'un package étendu .
npm installer [email protected] npm installer jquery@">=1.1.0 <2.2.0"Après la mise à jour
de npm install jquery@latest
, le numéro de version dans les dépendances changera également.
3. Mettez à jour le package dépendant
npm update jquery
4. Utilisez le package
let jquery = require('jquery');
<script src="/node_modules/jquery/dist/jquery.js">//Cela doit faire attention au chemin</script>
6, désinstallez le package dépendant
npm désinstallez jquery
Gestion des versions sémantiques (règles de gestion des versions sémantiques)
https://docs.npmjs.com/about-semantic-versioning
https://github.com/npm/node-semver
package .json Notes
selon ce qui précède Lorsque nous utilisons npm init
il nous sera demandé de remplir plusieurs éléments. Certains d'entre eux sont facultatifs et d'autres sont obligatoires. Ces champs obligatoires sont tous des champs qu'un contenu package.json
doit avoir : name
et. version
. Sinon, install
ne peut pas être exécutée
xxx
Autres notes :