Maison  >  Article  >  interface Web  >  Partage de gestion de plusieurs packages de dépendances NPM

Partage de gestion de plusieurs packages de dépendances NPM

小云云
小云云original
2018-01-27 13:52:232273parcourir

Cet article vous présente principalement plusieurs types de gestion de packages de dépendances npm que vous devez connaître. npm est le gestionnaire de packages de node.js et est un outil de ligne de commande. L'article le présente en détail à travers un exemple de code. it Vous pouvez l'utiliser comme référence et suivre l'éditeur pour apprendre ensemble.

npm prend actuellement en charge les types de gestion de packages de dépendances suivants :

  • dépendances

  • devDependencies

  • peerDependencies

  • optionalDependencies

  • bundledDependencies / bundleDependencies

If vous Quel type de gestion des dépendances vous souhaitez utiliser, vous pouvez ensuite le mettre dans l'objet de dépendance correspondant dans package.json, tel que :

 "devDependencies": {
 "fw2": "^0.3.2",
 "grunt": "^1.0.1",
 "webpack": "^3.6.0"
 },
 "dependencies": {
 "gulp": "^3.9.1",
 "hello-else": "^1.0.0"
 },
 "peerDependencies": { },
 "optionalDependencies": { },
 "bundledDependencies": []

Regardons-le un par un :

dépendances

Les dépendances d'application, ou dépendances métier, sont nos objets de gestion de packages de dépendances les plus couramment utilisés ! Il est utilisé pour spécifier les packages externes dont dépend l'application. Ces dépendances sont requises pour une exécution normale après la publication de l'application, mais n'incluent pas les packages utilisés lors des tests ou du packaging local. Vous pouvez utiliser la commande suivante pour installer :

npm install packageName --save

dependencies est un simple objet JSON, comprenant le nom du package et la version du package, où la version du package peut être un numéro de version ou une adresse URL. Par exemple :

{ 
 "dependencies" :{ 
 "foo" : "1.0.0 - 2.9999.9999", // 指定版本范围
 "bar" : ">=1.0.2 <2.1.2", 
 "baz" : ">1.0.2 <=2.3.4", 
 "boo" : "2.0.1", // 指定版本
 "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0", 
 "asd" : "http://asdf.com/asdf.tar.gz", // 指定包地址
 "til" : "~1.2", // 最近可用版本
 "elf" : "~1.2.3", 
 "elf" : "^1.2.3", // 兼容版本
 "two" : "2.x", // 2.1、2.2、...、2.9皆可用
 "thr" : "*", // 任意版本
 "thr2": "", // 任意版本
 "lat" : "latest", // 当前最新
 "dyl" : "file:../dyl", // 本地地址
 "xyz" : "git+ssh://git@github.com:npm/npm.git#v1.0.27", // git 地址
 "fir" : "git+ssh://git@github.com:npm/npm#semver:^5.0",
 "wdy" : "git+https://isaacs@github.com/npm/npm.git",
 "xxy" : "git://github.com/npm/npm.git#v1.0.27",
 }
}

devDependencies

Dépendances de l'environnement de développement, juste derrière la fréquence d'utilisation des dépendances ! Sa définition d'objet est la même que celle des dépendances, sauf que les packages qu'il contient ne sont utilisés que dans l'environnement de développement, pas dans l'environnement de production. Ces packages sont généralement des tests unitaires ou des outils de packaging, tels que gulp, grunt, webpack, moca, coffee. , etc., qui peuvent être utilisés La commande suivante est utilisée pour installer :

npm install packageName --save-dev

Par exemple :

{ "name": "ethopia-waza",
 "description": "a delightfully fruity coffee varietal",
 "version": "1.2.3",
 "devDependencies": {
 "coffee-script": "~1.6.3"
 },
 "scripts": {
 "prepare": "coffee -o lib/ -c src/waza.coffee"
 },
 "main": "lib/waza.js"
}

Le script de préparation sera exécuté avant la publication, afin que les utilisateurs ne le fassent pas il faut s'y fier lors de la compilation du projet. En mode développement, l'exécution de npm install exécutera également le script de préparation, qui peut être facilement testé pendant le développement.

À ce stade, comprenez-vous la différence entre --save et --save-dev ?

peerDependencies

Les dépendances égales, ou dépendances homologues, sont utilisées pour spécifier les versions d'hôte compatibles avec le package actuel (c'est-à-dire le package que vous avez écrit). Comment le comprendre ? Imaginez, nous écrivons un plug-in gulp, mais gulp a plusieurs versions principales. Nous voulons uniquement être compatible avec la dernière version. Pour le moment, nous pouvons utiliser peerDependencies pour spécifier :

{
 "name": "gulp-my-plugin",
 "version": "0.0.1",
 "peerDependencies": {
 "gulp": "3.x"
 }
}

Quand. Lorsque d'autres personnes utilisent notre plug-in, peerDependencies indiquera clairement à l'utilisateur quelle version hôte du plug-in vous devez installer.

Normalement, nous utiliserons plusieurs plug-ins d'un même hôte (tels que gulp) dans un projet. S'il y a une incompatibilité d'hôte entre eux, lors de l'exécution de l'installation de npm, la cli affichera un message d'erreur pour le signaler. Nous, par exemple :

npm ERR! peerinvalid The package gulp does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer gulp-cli-config@0.1.3 wants gulp@~3.1.9
npm ERR! peerinvalid Peer gulp-cli-users@0.1.4 wants gulp@~2.3.0

exécutons la commande npm install gulp-my-plugin --save-dev pour installer notre plug-in. Jetons un coup d'œil au graphe de dépendances :

├── gulp-my-plugin@0.0.1
└── gulp@3.9.1
OK, bien !

Notez que npm 1 et npm 2 installeront automatiquement les mêmes dépendances. npm 3 ne sera plus automatiquement installé et un avertissement sera généré ! L'ajout manuel de dépendances dans le fichier package.json peut être résolu.


optionalDependencies


Dépendances facultatives S'il existe des packages dépendants que le projet peut toujours exécuter même si l'installation échoue ou si vous souhaitez que NPM continue de s'exécuter, vous pouvez utiliser. Dépendances facultatives. De plus, les dépendances facultatives écraseront le package de dépendances portant le même nom dans les dépendances, ne l'écrivez donc pas aux deux endroits.

Par exemple, un package de dépendances facultatif est comme un plug-in de programme. S'il existe, la logique existante sera exécutée. S'il n'existe pas, une autre logique sera exécutée.

try {
 var foo = require('foo')
 var fooVersion = require('foo/package.json').version
} catch (er) {
 foo = null
}
if ( notGoodFooVersion(fooVersion) ) {
 foo = null
}

// .. then later in your program ..

if (foo) {
 foo.doFooThings()
}
bundledDependencies / bundleDependencies


Emballage des dépendances, bundledDependencies est un objet tableau contenant les noms de packages dépendants lors de la publication, les packages de cet objet seront empaquetés dans la version finale In. le sac. Par exemple :

{
 "name": "fe-weekly",
 "description": "ELSE 周刊",
 "version": "1.0.0",
 "main": "index.js",
 "devDependencies": {
 "fw2": "^0.3.2",
 "grunt": "^1.0.1",
 "webpack": "^3.6.0"
 },
 "dependencies": {
 "gulp": "^3.9.1",
 "hello-else": "^1.0.0"
 },
 "bundledDependencies": [
 "fw2",
 "hello-else"
 ]
}
Exécutez la commande d'empaquetage npm pack, et le package fe-weekly-1.0.0.tgz généré inclura fw2 et hello-else. Cependant, il convient de noter que ces deux packages doivent d'abord être déclarés dans devDependencies ou dépendances, sinon le packaging signalera une erreur.

Recommandations associées :


Spring Boot introduit le package de dépendances Druid

Explication détaillée des méthodes de configuration npm et webpack dans le nœud. js

Partage comment utiliser la dernière version de nodejs pour installer npm

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn