Latest web development tutorials

NPM utiliser Présentation

NPM est accompagné NodeJS des outils de gestion des paquets installés ensemble, peuvent résoudre le code de nombreux problèmes pour le déploiement sur des scénarios d'utilisation courants sont les suivants:

  • NPM permet aux utilisateurs de télécharger depuis le serveur vers les packages tiers écrits par d'autres pour une utilisation locale.
  • Il permet aux utilisateurs de télécharger et d'installer le programme de ligne de commande écrite par quelqu'un d'autre pour utiliser le serveur local à partir du NPM.
  • Il permet aux utilisateurs d'écrire leur propre programme package ou ligne de commande téléchargée sur le serveur pour les autres à utiliser NPM.

Depuis la nouvelle version de nodejs ont intégré npm, donc avant npm également être installé. Vous pouvez également entrer dans le"npm -v" pour tester si une installation réussie.La commande suivante, version apparaît l'installation rapide a réussi:

$ npm -v
2.3.0

Si vous installez une version plus ancienne de npm, il peut facilement être mis à niveau via npm à commande, la commande est la suivante:

$ sudo npm install npm -g
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
[email protected] /usr/local/lib/node_modules/npm

Si le système de fenêtre, utilisez la commande suivante:

npm install npm -g

Npm installer à l'aide du module de commande

npm installer la syntaxe du module Node.js est la suivante:

$ npm install <Module Name>

Les exemples suivants, nous utilisons la commande pour installer npm cadre commun module Web Node.jsexpress:

$ npm install express

Une fois installé, exprimer le paquet est placé dans le répertoire node_modules dans le répertoire du projet, de sorte que le code que parbesoin ( «exprès») comme manière, sans spécifier le chemin d'accès des paquets tiers.

var express = require('express');

l'installation globale et installation locale

npm package d'installation dans une installation locale (local), l'installation globale (mondiale) sont deux, frapper à partir d'une ligne de commande, la seule différence est qu'il n'y a pas seulement -g, comme

npm install express          # 本地安装
npm install express -g   # 全局安装

Si l'erreur suivante:

npm err! Error: connect ECONNREFUSED 127.0.0.1:8087 

solution:

$ npm config set proxy null

Installation locale

  • 1. Placez le package d'installation placé dans les ./node_modules (répertoire où la commande est en cours d'exécution npm), sinon répertoire node_modules va générer dans le répertoire d'exécution de la commande npm du répertoire en cours.
  • 2. peut être introduit package installé localement nécessitent par ().

Installation mondiale

  • 1. Placez le package d'installation placé dans le répertoire / usr / local ou votre noeud de répertoire d'installation.
  • 2. Vous pouvez utiliser directement sur la ligne de commande.

Si vous voulez avoir les deux fonctions, vous devez l'installer en deux endroits ou sur le lien de npm.

Ensuite, nous utilisons le global installer express

$ npm install express -g

Le processus d'installation du résultat suivant, la première ligne du numéro de version de sortie et l'emplacement d'installation du module.

[email protected] node_modules/express
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected])

Vous pouvez utiliser la commande suivante pour afficher tous les modules installés mondiaux:

$ npm ls -g

Utilisez package.json

package.json situé dans le module de répertoire, définit les propriétés de l'emballage. Regardons le node_modules / express / contenu package.json fichier package.json colis express situé:

{
  "name": "express",
  "description": "Fast, unopinionated, minimalist web framework",
  "version": "4.13.3",
  "author": {
    "name": "TJ Holowaychuk",
    "email": "[email protected]"
  },
  "contributors": [
    {
      "name": "Aaron Heckmann",
      "email": "[email protected]"
    },
    {
      "name": "Ciaran Jessup",
      "email": "[email protected]"
    },
    {
      "name": "Douglas Christopher Wilson",
      "email": "[email protected]"
    },
    {
      "name": "Guillermo Rauch",
      "email": "[email protected]"
    },
    {
      "name": "Jonathan Ong",
      "email": "[email protected]"
    },
    {
      "name": "Roman Shtylman",
      "email": "[email protected]"
    },
    {
      "name": "Young Jae Sim",
      "email": "[email protected]"
    }
  ],
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/strongloop/express.git"
  },
  "homepage": "http://expressjs.com/",
  "keywords": [
    "express",
    "framework",
    "sinatra",
    "web",
    "rest",
    "restful",
    "router",
    "app",
    "api"
  ],
  "dependencies": {
    "accepts": "~1.2.12",
    "array-flatten": "1.1.1",
    "content-disposition": "0.5.0",
    "content-type": "~1.0.1",
    "cookie": "0.1.3",
    "cookie-signature": "1.0.6",
    "debug": "~2.2.0",
    "depd": "~1.0.1",
    "escape-html": "1.0.2",
    "etag": "~1.7.0",
    "finalhandler": "0.4.0",
    "fresh": "0.3.0",
    "merge-descriptors": "1.0.0",
    "methods": "~1.1.1",
    "on-finished": "~2.3.0",
    "parseurl": "~1.3.0",
    "path-to-regexp": "0.1.7",
    "proxy-addr": "~1.0.8",
    "qs": "4.0.0",
    "range-parser": "~1.0.2",
    "send": "0.13.0",
    "serve-static": "~1.10.0",
    "type-is": "~1.6.6",
    "utils-merge": "1.0.0",
    "vary": "~1.0.1"
  },
  "devDependencies": {
    "after": "0.8.1",
    "ejs": "2.3.3",
    "istanbul": "0.3.17",
    "marked": "0.3.5",
    "mocha": "2.2.5",
    "should": "7.0.2",
    "supertest": "1.0.1",
    "body-parser": "~1.13.3",
    "connect-redis": "~2.4.1",
    "cookie-parser": "~1.3.5",
    "cookie-session": "~1.2.0",
    "express-session": "~1.11.3",
    "jade": "~1.11.0",
    "method-override": "~2.3.5",
    "morgan": "~1.6.1",
    "multiparty": "~4.1.2",
    "vhost": "~3.0.1"
  },
  "engines": {
    "node": ">= 0.10.0"
  },
  "files": [
    "LICENSE",
    "History.md",
    "Readme.md",
    "index.js",
    "lib/"
  ],
  "scripts": {
    "test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/",
    "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require test/support/env --reporter spec --check-leaks test/ test/acceptance/",
    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/ test/acceptance/",
    "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/"
  },
  "gitHead": "ef7ad681b245fba023843ce94f6bcb8e275bbb8e",
  "bugs": {
    "url": "https://github.com/strongloop/express/issues"
  },
  "_id": "[email protected]",
  "_shasum": "ddb2f1fb4502bf33598d2b032b037960ca6c80a3",
  "_from": "express@*",
  "_npmVersion": "1.4.28",
  "_npmUser": {
    "name": "dougwilson",
    "email": "[email protected]"
  },
  "maintainers": [
    {
      "name": "tjholowaychuk",
      "email": "[email protected]"
    },
    {
      "name": "jongleberry",
      "email": "[email protected]"
    },
    {
      "name": "dougwilson",
      "email": "[email protected]"
    },
    {
      "name": "rfeng",
      "email": "[email protected]"
    },
    {
      "name": "aredridel",
      "email": "[email protected]"
    },
    {
      "name": "strongloop",
      "email": "[email protected]"
    },
    {
      "name": "defunctzombie",
      "email": "[email protected]"
    }
  ],
  "dist": {
    "shasum": "ddb2f1fb4502bf33598d2b032b037960ca6c80a3",
    "tarball": "http://registry.npmjs.org/express/-/express-4.13.3.tgz"
  },
  "directories": {},
  "_resolved": "https://registry.npmjs.org/express/-/express-4.13.3.tgz",
  "readme": "ERROR: No README data found!"
}

Package.json Description

  • nom - le nom du package.

  • Version - le numéro de version du paquet.

  • Description - description du paquet.

  • officiel package site url- page d' accueil.

  • auteur - auteur du nom du package.

  • Autres noms contributeurs package- contributeurs.

  • dépendances - Liste des dépendances.Si les dépendances ne sont pas installés, npm installera automatiquement les paquets dépendants dans le répertoire node_module.

  • zones de type stockage de code de package, soit git ou svn, git disponible sur Github- référentiel.

  • principale - champ principalest un ID de module, qui est un pointeur vers un projet majeur de votre programme. Autrement dit, si vous emballez nom explicite, alors l'utilisateur à l'installer, puis exiger ( «express»).

  • mots - clés -les mots - clés


module Déchargement

Nous pouvons utiliser la commande suivante pour désinstaller des modules Node.js.

$ npm uninstall express

Après la désinstallation, vous pouvez aller à l'emballage / node_modules / catalogue suivant est là, ou utilisez la commande suivante:

$ npm ls

Module de mise à jour

Nous pouvons utiliser la commande suivante pour mettre à jour le module:

$ npm update express

Module de recherche

Utilisez les modules de recherche suivants:

$ npm search express

Créer un module

Créez un module, le fichier package.json est essentiel. Nous pouvons utiliser NPM générer fichier package.json, le fichier résultant contient les résultats de base.

$ 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> --save` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
name: (node_modules) w3big                   # 模块名
version: (1.0.0) 
description: Node.js 测试模块(www.w3big.com)  # 描述
entry point: (index.js) 
test command: make test
git repository: https://github.com/w3big/w3big.git  # Github 地址
keywords: 
author: 
license: (ISC) 
About to write to ……/node_modules/package.json:      # 生成地址

{
  "name": "w3big",
  "version": "1.0.0",
  "description": "Node.js 测试模块(www.w3big.com)",
  ……
}


Is this ok? (yes) yes

Les informations ci-dessus, vous devez entrer votre propre situation. Après l'entrée finale «oui» va générer un fichier package.json.

Ensuite, nous pouvons utiliser la commande suivante pour les utilisateurs enregistrés (utilisation de courrier recommandé) à npm référentiel:

$ npm adduser
Username: mcmohd
Password:
Email: (this IS public) [email protected]

Ensuite, nous utilisons la commande suivante pour libérer le module:

$ npm publish

Si vous faites les étapes ci-dessus sont faites correctement, vous pouvez utiliser la même chose avec d'autres modules à installer npm.


Le numéro de version

NPM télécharger et utiliser le code sera libéré lorsqu'il est exposé au numéro de version. NPM utilisant sémantique numéro de version pour gérer le code, ici brièvement.

Sémantique version est divisée en trois XYZ, représentant le numéro de version majeure, mineure numéro de version et la version du patch numéro. Lorsque le changement de code, le numéro de version de la mise à jour selon les principes suivants.

  • Si seulement corrige bug, vous devez mettre à jour le bit Z.
  • Si vous êtes une nouvelle fonctionnalité, mais rétrocompatible, il doit être mis à jour Y bits.
  • S'il y a de grands changements, pas vers le bas compatibles, il doit être mis à jour la position X.

Avec cette assurance après le numéro de version, dans un communiqué dépendre de paquets tiers, en plus de compter sur un numéro de version fixe, mais dépend également de toute une gamme de numéros de version. Par exemple, "argv": "0.0.x" dépend de la série 0.0.x représente la dernière version de argv.

Toutes les versions prennent en charge plage de numéros de ciblage NPM peut consulter la documentation officielle .


commandes courantes NMP

En plus de la section de ce chapitre, NPM fournit également un grand nombre de fonctionnalités, package.json a également de nombreux autres domaines utiles.

En plus de la npmjs.org/doc/ vérifier la documentation officielle, mais voici quelques - uns couramment utilisé les commandes NPM.

NPM offre beaucoup de commandes, telles que l'installation et de publier, en utilisant npm aide pour voir toutes les commandes.

  • NPM offre beaucoup de commandes, telles que l' install et la publish , en utilisant npm help pour voir toutes les commandes.

  • Utilisez npm help <command> pour afficher l' aide détaillée pour une commande, comme npm help install .

  • Dans package.json utiliser le répertoire suivant npm install . -g Peut être installé localement sur le programme de ligne de commande de courant qui peut être utilisé pour les tests locaux avant la libération.

  • Utilisez npm update <package> peut mettre le répertoire courant node_modules sous - répertoire à l' intérieur du module correspond à la dernière version.

  • Utilisez npm update <package> -g peut correspondre à un programme de ligne de commande globalement installé la mise à jour vers la dernière version.

  • Utilisez npm cache clear peut effacer NPM cache local, de traiter avec le même numéro de version pour une nouvelle balises de libération.

  • Utilisez npm unpublish <package>@<version> > peut être révoquée post a publié une version de leur propre code.


Utilisez le miroir Taobao NPM

Nous savons tous que l'utilisation directe interne de npm officielle miroir est très lent, il est recommandé d'utiliser un miroir Taobao NPM.

Taobao NPM est une image complète de miroir npmjs.org, vous pouvez utiliser ceci à la place de la version officielle (en lecture seule), la fréquence de synchronisation actuellement de 10 minutes afin d'assurer autant que possible de se synchroniser avec le service officiel.

Vous pouvez utiliser CNPM personnalisé Taobao (support de compression gzip) de l'outil de ligne de commande au lieu de la npm par défaut:

$ npm install -g cnpm --registry=https://registry.npm.taobao.org

Ce module peut être installé à l'aide des commandes CNPM:

$ cnpm install [name]

Plus d' informations peuvent être trouvées: http://npm.taobao.org/ .