nom
Jusqu'à ce que nous publions le package dans le référentiel, le champ peut également être évalué. La question est que ce champ est pratique à utiliser pour nommer le fichier d'installation ou, par exemple, pour afficher le nom du produit sur sa page Web. En général, "comment appelez-vous un yacht, .."
version
L'idée principale est de ne pas oublier d'augmenter le numéro de version tout en étendant les fonctionnalités, en corrigeant les bugs, ... Malheureusement, dans notre bureau, vous pouvez toujours trouver des produits avec la version inchangée 0.0.0. Et ensuite, devinez quel type de fonctionnalité fonctionne pour le client ...
principal
Ce
champ indique quel fichier sera lancé au démarrage de notre application (`npm start`). Si le package est utilisé comme dépendance, quel fichier sera importé lors de l'utilisation de notre module par une autre application. Le répertoire courant est le répertoire où se trouve le fichier `package.json`.
Et aussi, si nous, par exemple, utilisons
vscode , le fichier spécifié dans ce champ sera lancé lorsque le débogueur est appelé ou lorsque la commande "execute" est exécutée.
L'extension ".js" peut être omise. C'est plutôt une conséquence de tous les cas d'utilisation possibles, donc ce n'est pas directement expliqué dans la documentation.
moteurs
Ce champ contient le tuple: {"node":
version , "npm":
version , ...}.
Je connais les champs "node" et "npm". Ils déterminent les versions de node.js et npm nécessaires au fonctionnement de notre application. Les versions sont vérifiées en exécutant la commande npm install.
La syntaxe standard pour déterminer la version des packages de dépendances est prise en charge: sans préfixe (version unique), le préfixe "~" (les deux premiers chiffres de la version doivent correspondre) et le préfixe "^" (seul le premier numéro de la version doit correspondre). S'il y a un préfixe, la version doit être supérieure ou égale à celle spécifiée dans ce champ. Juste une liste de versions; indication explicite plus, moins, ... etc. fonctionne également.
Clause de non-responsabilité "Npm install" vérifie les versions spécifiées dans les "moteurs" uniquement si le mode "strict moteur" est activé. Nous l'incluons pour chaque projet, en ajoutant le fichier .npmrc avec la ligne: «engine-strict = true». Il était une fois, "npm install" faisait cette vérification par défaut.
Certains conteneurs, au moins dans la documentation, écrivent que des versions appropriées seront utilisées par défaut. Dans ce cas, nous parlons d'Azure.
Un exemple:
"engines": { "node": "~8.11",
"râteau" régulier
Et le roi est nu!
Il a été convenu à plusieurs reprises avec le client que la version requise de `node.js` devrait être au moins 8. Lorsque les versions initiales de l'application ont été livrées, tout a fonctionné. «Un jour» après la livraison de la nouvelle version chez le client, l'application a cessé de fonctionner. Tout a fonctionné dans nos tests.
Le problème était que dans cette version, nous avons commencé à utiliser des fonctionnalités prises en charge uniquement à partir de la version 8 node.js. Le champ «moteurs» n'était pas rempli, donc personne n'avait remarqué auparavant que le client avait une ancienne version de node.js. (Services Web Azure par défaut).
scripts
Le champ contient un tuple de la forme: {"script1":
script1 , "script2":
script2 , ...}.
Il existe des scripts standard qui s'exécutent dans une situation donnée. Par exemple, le script "install" s'exécutera après avoir exécuté "npm install". Il est très pratique, par exemple, de vérifier la disponibilité des programmes nécessaires au fonctionnement de l'application. Ou, par exemple, pour compresser tous les fichiers statiques disponibles via notre service Web afin qu'ils n'aient pas à être compressés à la volée.
Dans ce cas, vous ne pouvez pas vous limiter uniquement aux noms standard. Pour exécuter un script arbitraire, vous devez exécuter "npm run
script-name ".
Il est pratique de rassembler tous les scripts utilisés en un seul endroit.
Un exemple:
"scripts": { "install": "node scripts/install-extras", "start": "node src/well/hidden/main/server extra_param_1 extra_param_2", "another-script": "node scripts/another-script" }
PS L'extension ".js" peut être omise dans la plupart des cas.