Latest web development tutorials

NPM używać Wprowadzenie

NPM towarzyszy NodeJS pakiet narzędzi do zarządzania zainstalowanymi razem, można rozwiązać wiele problemów NodeJS kod do wdrożenia na typowych scenariuszy użytkowania są następujące:

  • NPM pozwala użytkownikom pobrać z serwera na opakowaniach zewnętrznych pisanych przez innych do stosowania miejscowego.
  • To pozwala użytkownikom pobrać i zainstalować program wiersza polecenia napisane przez kogoś innego, aby korzystać z serwera lokalnego z KMP.
  • To pozwala użytkownikom pisać swój własny program pakietu lub wiersz poleceń przekazany do serwera dla innych do korzystania z KMP.

Ponieważ nowa wersja nodejs zintegrowały KMP, więc przed KMP być również zainstalowany. Można również wprowadzić"npm -v", aby sprawdzić, czy udanej instalacji.Następujące polecenie, wersja pojawia się szybka instalacja przebiegła pomyślnie:

$ npm -v
2.3.0

Jeśli zainstalować starszą wersję npm, można łatwo uaktualnić poprzez KMP do polecenia, polecenie jest następujące:

$ 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

Jeśli system okienny, należy użyć następującego polecenia:

npm install npm -g

NPM zainstalować przy użyciu modułu dowodzenia

npm zainstalować moduł node.js składnia jest następująca:

$ npm install <Module Name>

Poniższe przykłady, używamy polecenia do zainstalowania npm wspólne ramy modułu WWW node.jsExpress:

$ npm install express

Raz zainstalowany, wyrażają pakiet jest umieszczony w katalogu node_modules w katalogu projektu, więc kod tylko przezrequire ( 'Express'), jak sposób, bez podania ścieżki do opakowań zewnętrznych.

var express = require('express');

Globalny montaż i instalacja lokalna

npm zainstalować pakiet do instalacji lokalnej (local), globalny instalację (globalne) są dwa, puk z wiersza poleceń, a jedyną różnicą jest brak -g tylko, takich jak

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

Jeśli następujący błąd:

npm err! Error: connect ECONNREFUSED 127.0.0.1:8087 

Rozwiązanie:

$ npm config set proxy null

Instalacja lokalna

  • 1. Umieść pakiet instalacyjny umieszczone w ./node_modules (katalog, w którym polecenie działa NPM), jeśli nie node_modules katalog wygeneruje w bieżącym katalogu node_modules katalogu wykonania polecenia npm.
  • 2. mogą być wprowadzane lokalnie zainstalowany pakiet przez require ().

Globalny Instalacja

  • 1. Umieść pakiet instalacyjny umieszczone w katalogu / usr / local lub węzła katalogu instalacyjnym.
  • 2. Można użyć bezpośrednio w linii poleceń.

Jeśli chcesz mieć obie funkcje, trzeba go zainstalować w dwóch miejscach lub użyj linku npm.

Następnie używamy globalna instalacja ekspresowa

$ npm install express -g

Proces instalacji następujące wyjście, pierwsza linia numer wersji i lokalizacji instalacji modułu.

[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])

Można użyć następującego polecenia, aby wyświetlić wszystkie globalne zainstalowane moduły:

$ npm ls -g

Korzystanie package.json

package.json się w module katalogu określa właściwości opakowania. Spójrzmy na plik package.json Pakiet ekspresowy znajduje node_modules / wyraźnej treści / package.json:

{
  "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!"
}

Opis Package.json nieruchomości

  • Nazwa - nazwa pakietu.

  • Wersja - numer wersji pakietu.

  • Opis - opis pakietu.

  • Oficjalna strona pakiet url- strona główna.

  • autor - autor nazwy pakietu.

  • Nazwy innych użytkowników pakietu- współpracowników.

  • Zależności - lista zależności.Jeżeli zależności nie są zainstalowane, npm automatycznie zainstaluje pakiety zależne w katalogu node_module.

  • Obszary typu magazynu kod pakietu, albo git svn lub git dostępny na Github- repozytorium.

  • Głównym - pole głównymjest identyfikator modułu, który jest wskaźnikiem do dużego projektu swojego programu. Oznacza to, że jeśli opakowanie nazwa Express, to użytkownik, aby go zainstalować, a następnie require ( "express").

  • słowa kluczowe - Słowo kluczowe


moduł rozładunek

Możemy użyć następującego polecenia, aby odinstalować moduły node.js.

$ npm uninstall express

Po odinstalowaniu programu, można przejść do następnego pakietu / node_modules / Katalog jest tam, albo użyć następującego polecenia:

$ npm ls

Moduł aktualizacji

Możemy użyć następującego polecenia, aby zaktualizować moduł:

$ npm update express

Moduł wyszukiwania

Użyj następujących modułów wyszukiwania:

$ npm search express

Utwórz moduł

Utwórz moduł, plik package.json jest niezbędna. Możemy użyć NPM wygenerować plik package.json, plik wynikowy zawiera podstawowe wyniki.

$ 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

Powyższe informacje, trzeba wprowadzić swoją własną sytuację. Po ostatnim wejściu "tak" wygeneruje plik package.json.

Wtedy możemy użyć następującego polecenia dla zarejestrowanych użytkowników (wykorzystanie poleconym) w repozytorium npm:

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

Następnie stosujemy następujące polecenie, aby zwolnić moduł:

$ npm publish

Jeśli zrobisz powyższe kroki zostały wykonane poprawnie, można użyć tak samo z innymi modułami zainstalować KMP.


Numer wersji

NPM pobrać i używać kod ukaże się po wystawieniu na numer wersji. NPM za pomocą semantycznego numer wersji zarządzać kod tutaj krótko.

Wersja Semantyka jest podzielony na trzy XYZ, co stanowi główny numer wersji, numer wersji i drobne poprawki numer wersji. Kiedy zmiana kodu, numer wersji aktualizacji zgodnie z następującymi zasadami.

  • Gdyby tylko rozwiązuje problem, trzeba zaktualizować trochę z.
  • Jeśli to nowa funkcja, ale kompatybilny wstecz, to musi być aktualizowany bity y.
  • Jeśli istnieją duże zmiany, nie są kompatybilne w dół, musi być aktualizowana pozycja X.

Dzięki tej pewności po numerze wersji, w oświadczeniu zależy na opakowaniach zewnętrznych, dodatkowo polegać na stałej liczbie wersji, ale również zależy od zakresu numerów wersji. Na przykład "argv": "0.0.x" polega na serii 0.0.x reprezentuje najnowszą wersję argv.

Wszystkie wersje obsługują zakres numerów kierowania KMP można zobaczyć na oficjalnej dokumentacji .


KMP wspólne polecenia

Poza tym w tym rozdziale, NPM zapewnia również wiele funkcji, package.json posiada również wiele innych przydatnych pól.

Oprócz npmjs.org/doc/ sprawdzić oficjalnej dokumentacji, ale oto niektóre powszechnie używane polecenia KMP.

NPM zapewnia wiele poleceń, jak zainstalować i publikowania, stosując npm pomocy, aby zobaczyć wszystkie polecenia.

  • NPM zapewnia wiele poleceń, takich jak install i publish , stosując npm help , aby zobaczyć wszystkie polecenia.

  • Użyj npm help <command> aby zobaczyć szczegółową pomoc dla polecenia, takie jak npm help install .

  • W package.json użyć następujących katalog npm install . -g Może być zainstalowany lokalnie na bieżącym programem wiersza poleceń, które mogą być używane do lokalnego testowania przed zwolnieniem.

  • Użyj npm update <package> można umieścić aktualny katalog node_modules podkatalogu wewnątrz modułu odpowiada najnowszej wersji.

  • Użyj npm update <package> -g może odpowiadać programem wiersza poleceń globalnie zainstalowanej aktualizacji do najnowszej wersji.

  • Użyj npm cache clear można wyczyścić NPM lokalnej pamięci podręcznej, aby uporać się z tym samym numerem wersji dla nowej tagów uwalnianiu.

  • Użyj npm unpublish <package>@<version> > może zostać odwołane Poczta wydała wersję własnego kodu.


Użyj Taobao NPM lustro

Wszyscy wiemy, że krajowe bezpośrednie wykorzystanie oficjalnej KMP lustro jest bardzo powolny, nie zaleca się używania Taobao NPM lustro.

Taobao NPM jest pełne lustro npmjs.org obrazu, można użyć tego zamiast oficjalnej wersji (tylko do odczytu), obecnie synchronizacji częstotliwością 10 minut w celu zapewnienia, w miarę możliwości, aby zsynchronizować z oficjalną obsługą.

Można użyć niestandardowego cnpm Taobao (gzip kompresja) pomocy narzędzia wiersza polecenia zamiast domyślnego KMP:

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

Moduł ten może być zainstalowany przy użyciu poleceń cnpm:

$ cnpm install [name]

Więcej informacji można znaleźć: http://npm.taobao.org/ .