Node.js - NPM
Node Package Manager (NPM) zapewnia dwie główne funkcje -
Repozytoria online pakietów / modułów node.js, które można przeszukiwać na search.nodejs.org
Narzędzie wiersza poleceń do instalowania pakietów Node.js, zarządzania wersjami i zarządzania zależnościami pakietów Node.js.
NPM jest dostarczany w pakiecie z instalacjami Node.js po wersji v0.6.3. Aby sprawdzić to samo, otwórz konsolę i wpisz następujące polecenie i zobacz wynik -
$ npm --version
2.7.1
Jeśli używasz starej wersji NPM, dość łatwo jest zaktualizować ją do najnowszej wersji. Po prostu użyj następującego polecenia od roota -
$ sudo npm install npm -g
/usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm-cli.js
[email protected] /usr/lib/node_modules/npm
Instalowanie modułów za pomocą NPM
Istnieje prosta składnia instalacji dowolnego modułu Node.js -
$ npm install <Module Name>
Na przykład poniżej znajduje się polecenie instalacji słynnego modułu struktury sieciowej Node.js o nazwie express -
$ npm install express
Teraz możesz użyć tego modułu w swoim pliku js w następujący sposób -
var express = require('express');
Instalacja globalna vs lokalna
Domyślnie NPM instaluje dowolne zależności w trybie lokalnym. Tutaj tryb lokalny odnosi się do instalacji pakietu w katalogu node_modules leżącym w folderze, w którym znajduje się aplikacja Node. Pakiety wdrożone lokalnie są dostępne za pośrednictwem metody require (). Na przykład, kiedy zainstalowaliśmy moduł express, utworzył on katalog node_modules w bieżącym katalogu, w którym zainstalował moduł express.
$ ls -l
total 0
drwxr-xr-x 3 root root 20 Mar 17 02:23 node_modules
Alternatywnie możesz użyć npm ls polecenie, aby wyświetlić listę wszystkich lokalnie zainstalowanych modułów.
Globalnie zainstalowane pakiety / zależności są przechowywane w katalogu systemowym. Takie zależności mogą być używane w funkcji CLI (interfejs wiersza poleceń) dowolnego node.js, ale nie można ich importować bezpośrednio przy użyciu funkcji require () w aplikacji Node. Teraz spróbujmy zainstalować moduł ekspresowy przy użyciu instalacji globalnej.
$ npm install express -g
To da podobny wynik, ale moduł zostanie zainstalowany globalnie. Tutaj pierwsza linia pokazuje wersję modułu i lokalizację, w której jest instalowany.
[email protected] /usr/lib/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])
Możesz użyć następującego polecenia, aby sprawdzić wszystkie moduły zainstalowane globalnie -
$ npm ls -g
Korzystanie z package.json
package.json znajduje się w katalogu głównym dowolnej aplikacji / modułu Node i służy do definiowania właściwości pakietu. Otwórzmy plik package.json pakietu ekspresowego obecnego wnode_modules/express/
{
"name": "express",
"description": "Fast, unopinionated, minimalist web framework",
"version": "4.11.2",
"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": "https://github.com/strongloop/express"
},
"homepage": "https://expressjs.com/", "keywords": [
"express",
"framework",
"sinatra",
"web",
"rest",
"restful",
"router",
"app",
"api"
],
"dependencies": {
"accepts": "~1.2.3",
"content-disposition": "0.5.0",
"cookie-signature": "1.0.5",
"debug": "~2.1.1",
"depd": "~1.0.0",
"escape-html": "1.0.1",
"etag": "~1.5.1",
"finalhandler": "0.3.3",
"fresh": "0.2.4",
"media-typer": "0.3.0",
"methods": "~1.1.1",
"on-finished": "~2.2.0",
"parseurl": "~1.3.0",
"path-to-regexp": "0.1.3",
"proxy-addr": "~1.0.6",
"qs": "2.3.3",
"range-parser": "~1.0.2",
"send": "0.11.1",
"serve-static": "~1.8.1",
"type-is": "~1.5.6",
"vary": "~1.0.0",
"cookie": "0.1.2",
"merge-descriptors": "0.0.2",
"utils-merge": "1.0.0"
},
"devDependencies": {
"after": "0.8.1",
"ejs": "2.1.4",
"istanbul": "0.3.5",
"marked": "0.3.3",
"mocha": "~2.1.0",
"should": "~4.6.2",
"supertest": "~0.15.0",
"hjs": "~0.0.6",
"body-parser": "~1.11.0",
"connect-redis": "~2.2.0",
"cookie-parser": "~1.3.3",
"express-session": "~1.10.2",
"jade": "~1.9.1",
"method-override": "~2.3.1",
"morgan": "~1.5.1",
"multiparty": "~4.1.1",
"vhost": "~3.0.0"
},
"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-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/",
"test-travis": "istanbul cover node_modules/mocha/bin/_mocha
--report lcovonly -- --require test/support/env
--reporter spec --check-leaks test/ test/acceptance/"
},
"gitHead": "63ab25579bda70b4927a179b580a9c580b6c7ada",
"bugs": {
"url": "https://github.com/strongloop/express/issues"
},
"_id": "[email protected]",
"_shasum": "8df3d5a9ac848585f00a0777601823faecd3b148",
"_from": "express@*",
"_npmVersion": "1.4.28",
"_npmUser": {
"name": "dougwilson",
"email": "[email protected]"
},
"maintainers": [{
"name": "tjholowaychuk",
"email": "[email protected]"
},
{
"name": "jongleberry",
"email": "[email protected]"
},
{
"name": "shtylman",
"email": "[email protected]"
},
{
"name": "dougwilson",
"email": "[email protected]"
},
{
"name": "aredridel",
"email": "[email protected]"
},
{
"name": "strongloop",
"email": "[email protected]"
},
{
"name": "rfeng",
"email": "[email protected]"
}],
"dist": {
"shasum": "8df3d5a9ac848585f00a0777601823faecd3b148",
"tarball": "https://registry.npmjs.org/express/-/express-4.11.2.tgz"
},
"directories": {},
"_resolved": "https://registry.npmjs.org/express/-/express-4.11.2.tgz",
"readme": "ERROR: No README data found!"
}
Atrybuty Package.json
name - nazwa pakietu
version - wersja pakietu
description - opis pakietu
homepage - strona główna pakietu
author - autor pakietu
contributors - nazwiska współpracowników pakietu
dependencies- lista zależności. NPM automatycznie instaluje wszystkie wymienione tutaj zależności w folderze node_module pakietu.
repository - typ repozytorium i adres URL pakietu
main - punkt wejścia pakietu
keywords - słowa kluczowe
Odinstalowywanie modułu
Użyj następującego polecenia, aby odinstalować moduł Node.js.
$ npm uninstall express
Gdy NPM odinstaluje pakiet, możesz go zweryfikować, patrząc na zawartość katalogu / node_modules / lub wpisz następujące polecenie -
$ npm ls
Aktualizacja modułu
Zaktualizuj plik package.json i zmień wersję zależności, która ma zostać zaktualizowana, i uruchom następujące polecenie.
$ npm update express
Wyszukaj moduł
Wyszukaj nazwę pakietu za pomocą NPM.
$ npm search express
Utwórz moduł
Utworzenie modułu wymaga wygenerowania pliku package.json. Wygenerujmy plik package.json za pomocą NPM, który wygeneruje podstawowy szkielet pakietu package.json.
$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sane 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: (webmaster)
Będziesz musiał podać wszystkie wymagane informacje o swoim module. Możesz skorzystać z pomocy wspomnianego powyżej pliku package.json, aby zrozumieć znaczenie różnych żądanych informacji. Po wygenerowaniu pliku package.json użyj następującego polecenia, aby zarejestrować się w witrynie repozytorium NPM przy użyciu prawidłowego adresu e-mail.
$ npm adduser
Username: mcmohd
Password:
Email: (this IS public) [email protected]
Nadszedł czas, aby opublikować Twój moduł -
$ npm publish
Jeśli z Twoim modułem wszystko jest w porządku, zostanie on opublikowany w repozytorium i będzie można go zainstalować za pomocą NPM, tak jak każdy inny moduł Node.js.