От автора: Node Package Manager (NPM) предоставляет две основные функции: 1) online-хранилище для пакетов/модулей node.js, которые можно найти на search.nodejs.org; 2) утилита командной строки для установки пакетов Node.js, управления версиями и управления зависимостями пакетов Node.js.
Node js NPM поставляется в комплекте с установочным пакетом начиная с версии v0.6.3. Чтобы проверить версию Node, откройте консоль и введите следующую команду:
1 2 |
$ npm --version 2.7.1 |
Если вы используете старую версию NPM, ее можно довольно просто обновить. Просто используйте следующую команду: root:
1 2 3 |
$ 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 используется простой синтаксис:
1 |
$ npm install <Module Name> |
Например, следующая команда – устанавливает популярный модуль фреймворка Node.js под названием express:
1 |
$ npm install express |
Теперь вы можете использовать этот модуль в js-файле следующим образом:
1 |
var express = require('express'); |
Глобальная и локальная установка
По умолчанию NPM устанавливает любую зависимость в локальном режиме. Локальный режим означает, что пакет устанавливается в каталоге node_modules, содержащемся в папке, где находится приложение Node. Развернутые локально пакеты доступны через метод require(). Например, когда мы установили модуль express, был создал каталог node_modules в текущем каталоге, где был установлен данный модуль.
1 2 3 |
$ ls -l total 0 drwxr-xr-x 3 root root 20 Mar 17 02:23 node_modules |
Кроме того, вы можете использовать команду npm ls, чтобы отобразить список всех локально установленных модулей. Глобально установленные пакеты/зависимости хранятся в системном каталоге. Такие зависимости могут использоваться в функции CLI (интерфейс командной строки), но не могут быть напрямую импортированы с использованием require() в приложении Node. Теперь попробуем установить модуль express с помощью глобальной установки.
1 |
$ npm install express -g |
Мы получим аналогичный результат, но теперь модуль будет установлен глобально. В первой строке отображается версия модуля и место, где он установлен.
Вы можете использовать следующую команду для проверки всех глобально установленных модулей:
1 |
$ npm ls -g |
Использование package.json
package.json располагается в корневом каталоге любого приложения/модуля Node и используется для определения свойств пакета. Давайте откроем package.json из пакета express, расположенного в node_modules/express/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 |
{ "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": "//github.com/strongloop/express" }, "homepage": "//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": "//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": "//registry.npmjs.org/express/-/express-4.11.2.tgz" }, "directories": {}, "_resolved": "//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 используется следующая команда
1 |
$ npm uninstall express |
После того, как NPM удалит пакет, вы можете проверить это, просмотрев содержимое каталога /node_modules/ или введя следующую команду:
1 |
$ npm ls |
Обновление модуля
Обновите файл package.json и измените версию зависимостей, подлежащую обновлению, и выполните следующую команду.
1 |
$ npm update express |
Поиск модуля
Поиск по имени пакета с помощью NPM.
1 |
$ npm search express |
Создание модуля
Для создания модуля требуется сгенерировать файл package.json. Давайте создадим с помощью NPM файл package.json, который будет генерировать базовую структуру package.json.
1 2 3 4 5 6 7 8 9 10 11 12 |
$ 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, используя действительный адрес электронной почты.
1 2 3 4 |
$ npm adduser Username: mcmohd Password: Email: (this IS public) mcmohd@gmail.com |
Теперь вы можете опубликовать свой модуль:
1 |
$ npm publish |
Если с модулем все в порядке, он будет опубликован в репозитории и станет доступен для установки с помощью NPM, как и любой другой модуль Node.js.
Источник: //www.tutorialspoint.com/
Редакция: Команда webformyself.