От автора: Node Package Manager (NPM) предоставляет две основные функции: 1) online-хранилище для пакетов/модулей node.js, которые можно найти на search.nodejs.org; 2) утилита командной строки для установки пакетов Node.js, управления версиями и управления зависимостями пакетов Node.js.
Node js NPM поставляется в комплекте с установочным пакетом начиная с версии v0.6.3. Чтобы проверить версию Node, откройте консоль и введите следующую команду:
$ npm --version 2.7.1
Если вы используете старую версию NPM, ее можно довольно просто обновить. Просто используйте следующую команду: root:
$ sudo npm install npm -g /usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm-cli.js npm@2.7.1 /usr/lib/node_modules/npm
Установка модулей с помощью NPM
Для установки любого модуля Node.js используется простой синтаксис:
$ npm install <Module Name>
Например, следующая команда – устанавливает популярный модуль фреймворка Node.js под названием express:

Современные тенденции и подходы в веб-разработке
Узнайте алгоритм быстрого профессионального роста с нуля в сайтостроении
Узнать подробнее$ npm install express
Теперь вы можете использовать этот модуль в js-файле следующим образом:
var express = require('express');
Глобальная и локальная установка
По умолчанию NPM устанавливает любую зависимость в локальном режиме. Локальный режим означает, что пакет устанавливается в каталоге node_modules, содержащемся в папке, где находится приложение Node. Развернутые локально пакеты доступны через метод require(). Например, когда мы установили модуль express, был создал каталог node_modules в текущем каталоге, где был установлен данный модуль.
$ ls -l total 0 drwxr-xr-x 3 root root 20 Mar 17 02:23 node_modules
Кроме того, вы можете использовать команду npm ls, чтобы отобразить список всех локально установленных модулей. Глобально установленные пакеты/зависимости хранятся в системном каталоге. Такие зависимости могут использоваться в функции CLI (интерфейс командной строки), но не могут быть напрямую импортированы с использованием require() в приложении Node. Теперь попробуем установить модуль express с помощью глобальной установки.
$ npm install express -g
Мы получим аналогичный результат, но теперь модуль будет установлен глобально. В первой строке отображается версия модуля и место, где он установлен.
Вы можете использовать следующую команду для проверки всех глобально установленных модулей:
$ npm ls -g
Использование package.json
package.json располагается в корневом каталоге любого приложения/модуля Node и используется для определения свойств пакета. Давайте откроем package.json из пакета express, расположенного в node_modules/express/
{ "name": "express", "description": "Fast, unopinionated, minimalist web framework", "version": "4.11.2", "author": { "name": "TJ Holowaychuk", "email": "tj@vision-media.ca" }, "contributors": [{ "name": "Aaron Heckmann", "email": "aaron.heckmann+github@gmail.com" }, { "name": "Ciaran Jessup", "email": "ciaranj@gmail.com" }, { "name": "Douglas Christopher Wilson", "email": "doug@somethingdoug.com" }, { "name": "Guillermo Rauch", "email": "rauchg@gmail.com" }, { "name": "Jonathan Ong", "email": "me@jongleberry.com" }, { "name": "Roman Shtylman", "email": "shtylman+expressjs@gmail.com" }, { "name": "Young Jae Sim", "email": "hanul@hanul.me" } ], "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": "express@4.11.2", "_shasum": "8df3d5a9ac848585f00a0777601823faecd3b148", "_from": "express@*", "_npmVersion": "1.4.28", "_npmUser": { "name": "dougwilson", "email": "doug@somethingdoug.com" }, "maintainers": [ { "name": "tjholowaychuk", "email": "tj@vision-media.ca" }, { "name": "jongleberry", "email": "jonathanrichardong@gmail.com" }, { "name": "shtylman", "email": "shtylman@gmail.com" }, { "name": "dougwilson", "email": "doug@somethingdoug.com" }, { "name": "aredridel", "email": "aredridel@nbtsc.org" }, { "name": "strongloop", "email": "callback@strongloop.com" }, { "name": "rfeng", "email": "enjoyjava@gmail.com" } ], "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!" }
Атрибуты Package.json
name — имя пакета
version — версия пакета
description — описание пакета

Современные тенденции и подходы в веб-разработке
Узнайте алгоритм быстрого профессионального роста с нуля в сайтостроении
Узнать подробнееhomepage — домашняя страница пакета
author — автор пакета
contributors — имена соавторов пакета
dependencies — список зависимостей. NPM автоматически устанавливает все зависимости, указанные в этом атрибуте каталог пакета node_module.
repository — тип репозитория и URL-адрес пакета
main — точка входа пакета
keywords — ключевые слова
Удаление модуля
Для удаления модуля Node.js используется следующая команда
$ npm uninstall express
После того, как NPM удалит пакет, вы можете проверить это, просмотрев содержимое каталога /node_modules/ или введя следующую команду:
$ npm ls
Обновление модуля
Обновите файл package.json и измените версию зависимостей, подлежащую обновлению, и выполните следующую команду.
$ npm update express
Поиск модуля
Поиск по имени пакета с помощью NPM.
$ npm search express
Создание модуля
Для создания модуля требуется сгенерировать файл package.json. Давайте создадим с помощью NPM файл package.json, который будет генерировать базовую структуру 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)
Вам необходимо будет предоставить всю необходимую информацию о вашем модуле. В вышеупомянутом файле package.json вы можете найти справочную информацию относительно значений различных необходимых параметров. После создания package.json используйте следующую команду, чтобы зарегистрироваться на сайте репозитория NPM, используя действительный адрес электронной почты.
$ npm adduser Username: mcmohd Password: Email: (this IS public) mcmohd@gmail.com
Теперь вы можете опубликовать свой модуль:
$ npm publish
Если с модулем все в порядке, он будет опубликован в репозитории и станет доступен для установки с помощью NPM, как и любой другой модуль Node.js.
Источник: https://www.tutorialspoint.com/
Редакция: Команда webformyself.

Современные тенденции и подходы в веб-разработке
Узнайте алгоритм быстрого профессионального роста с нуля в сайтостроении
Узнать подробнее