Введение в использование NPM
NPM (Node Package Manager) — это инструмент управления пакетами JavaScript и менеджер пакетов по умолчанию для Node.js.
NPM позволяет разработчикам легко скачивать, устанавливать, делиться и управлять зависимостями и инструментами проекта.
NPM — это инструмент управления пакетами, поставляемый вместе с Node.js. Поэтому обычно вам нужно установить только Node.js, и NPM будет автоматически установлен в вашей системе.

Основные возможности:
Управление пакетами: NPM помогает устанавливать и управлять различными сторонними библиотеками (пакетами), необходимыми вашему проекту. Например, вы можете устанавливать, обновлять или удалять зависимости с помощью простых команд.
Управление версиями: NPM поддерживает контроль версий, позволяя вам зафиксировать конкретную версию зависимости или выбрать последнюю версию при необходимости.
Публикация пакетов: NPM позволяет разработчикам публиковать свои собственные библиотеки в реестре NPM, а другие разработчики могут скачивать и использовать эти библиотеки через NPM.
Инструмент командной строки: NPM предоставляет мощный инструмент командной строки, который можно использовать для различных операций, таких как установка пакетов, запуск скриптов, инициализация проектов и многого другого.
Поскольку последняя версия Node.js уже включает NPM, мы можем напрямую проверить это, введяnpm -vдля проверки того, успешно ли он установлен. Если появится номер версии, установка прошла успешно:
$ npm -v 2.3.0
Если у вас установлена более старая версия npm, вы можете легко обновить её с помощью команды npm. Команда выглядит следующим образом:
$ 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
Если вы используете систему Windows, можно воспользоваться следующей командой:
npm install npm -g
Использование команд npm для установки модулей
Синтаксис установки модуля Node.js с помощью npm выглядит следующим образом:
$ npm install <Module Name>
В следующем примере мы используем команду npm для установки распространённого модуля веб-фреймворка Node.js.express:
$ npm install express
После установки пакет express помещается в каталог node_modules в каталоге проекта. Поэтому в вашем коде достаточно использоватьrequire('express')таким образом; нет необходимости указывать путь к стороннему пакету.
var express = require('express');
Глобальная установка против локальной установки
Установка пакетов npm делится на два типа: локальная установка и глобальная установка. С точки зрения командной строки единственное различие — есть ли-gпараметр.
Локальная установка:Устанавливает пакет в каталог node_modules и сохраняет информацию в поле dependencies в package.json.
npm install express # 本地安装
Глобальная установка:Используется для установки инструментов командной строки или пакетов, которые должны использоваться в нескольких проектах.
npm install express -g # 全局安装
Если возникает следующая ошибка:
npm err! Error: connect ECONNREFUSED 127.0.0.1:8087
Решение:
$ npm config set proxy null
Локальная установка
-
Область действия: По умолчанию npm будет устанавливать пакет в
node_modulesпапку текущего проекта. Это означает, что каждый проект, использующий пакет, будет иметь свою собственную копию пакета. -
Назначение: Локальная установка обычно используется для зависимостей проекта. Каждый проект может иметь свои версии зависимостей, что помогает обеспечить стабильность и воспроизводимость проекта.
-
Команда установки: Выполните в каталоге проекта
npm install <package-name>установит пакет вnode_modulesпапку, иpackage.jsonдобавит зависимость в файл. -
Управление версиями: С помощью
package.jsonиpackage-lock.jsonфайла, управляйте версиями зависимостей, чтобы обеспечить согласованность в разных средах.
Глобальная установка
-
Область применения: Глобальная установка устанавливает пакеты в системный каталог, обычно
/usr/local/bin(в Unix-подобных системах) или%AppData%\npm(в Windows). -
Назначение: Глобальная установка используется для инструментов или утилит командной строки, которые не нужно повторно устанавливать в каждом проекте. Например, установка глобального
create-react-appможно использовать для создания новых проектов React. -
Команда установки: Используйте
-gфлаг для глобальной установки пакетов, напримерnpm install -g <package-name>。 -
Управление версиями: Версии глобально установленных пакетов управляются npm, но они не
package.jsonотражаются в проекте. Это означает, что глобально установленные пакеты могут использоваться совместно разными проектами, но они также могут вызывать проблемы из-за конфликтов версий.
| Особенности | Локальная установка | Глобальная установка |
|---|---|---|
| Область установки | Доступно только в текущем проекте | Доступно в общесистемной глобальной среде |
| Использование команды | npm install package-name | npm install -g package-name |
| Место установки | node_modulesкаталога | Системный глобальный каталог (зависит от ОС) |
| Сценарии использования | Зависимости проекта (библиотеки, фреймворки) | Инструменты CLI, генераторы проектов |
| Способ доступа | С помощьюrequire()илиimportusing | Используются непосредственно в командной строке |
| Объявление зависимостей | Вpackage.jsonзаписывается в | notpackage.jsonзаписывается в |
| Контроль версий | Разные версии могут использоваться в разных проектах | В системе хранится только одна версия |
| Проблемы с правами доступа | Специальные разрешения не требуются | Могут потребоваться права администратора |
Если вы хотите иметь обе функциональности, необходимо установить его в обоих местах или использоватьnpm link。
Далее мы установим express глобально
$ npm install express -g
Процесс установки выводит следующее содержимое; в первой строке показаны номер версии модуля и место установки.
[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])
Просмотр установленной информации
Вы можете использовать следующую команду, чтобы просмотреть все глобально установленные модули:
$ npm list -g ├─┬ [email protected] │ ├── [email protected] │ ├── [email protected] │ ├── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] │ ├─┬ [email protected] │ │ └── [email protected] ……
Чтобы просмотреть номер версии конкретного модуля, вы можете использовать следующую команду:
$ npm list grunt projectName@projectVersion /path/to/project/folder └── [email protected]
Удаление модулей
Мы можем использовать следующую команду, чтобы удалить модуль Node.js.
$ npm uninstall express
После удаления вы можете перейти в каталог /node_modules/, чтобы проверить, существует ли ещё пакет, или использовать следующую команду для проверки:
$ npm ls
Обновление модулей
Мы можем использовать следующую команду для обновления модуля:
$ npm update express
Поиск модулей
Используйте следующее для поиска модулей:
$ npm search express
Создание модулей
Для создания модуля необходим файл package.json. Мы можем использовать NPM, чтобы сгенерировать файл 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 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) example # 模块名
version: (1.0.0)
description: Node.js 测试模块(www.example.com) # 描述
entry point: (index.js)
test command: make test
git repository: https://github.com/example/example.git # Github 地址
keywords:
author:
license: (ISC)
About to write to ……/node_modules/package.json: # 生成地址
{
"name": "example",
"version": "1.0.0",
"description": "Node.js 测试模块(www.example.com)",
……
}
Is this ok? (yes) yes
Вам нужно ввести вышеуказанную информацию в соответствии с вашей ситуацией. После ввода "yes" в конце будет сгенерирован файл package.json.
Далее мы можем использовать следующую команду, чтобы зарегистрировать пользователя в реестре npm (регистрация с адресом электронной почты):
$ npm adduser Username: mcmohd Password: Email: (this IS public) [email protected]
Далее мы будем использовать следующую команду, чтобы опубликовать модуль:
$ npm publish
Если все вышеперечисленные шаги были выполнены правильно, вы можете использовать npm, чтобы установить его так же, как и другие модули.
Номер версии
При использовании NPM для скачивания и публикации кода вы столкнётесь с номерами версий. NPM использует семантические номера версий для управления кодом. Вот краткое введение.
Номера версий следуют семантическому версионированию (SemVer) в формате MAJOR.MINOR.PATCH и могут иметь дополнительные метки.
- MAJOR (основная версия): Увеличивается, когда вы вносите несовместимые изменения API. Например:
2.0.0。 - MINOR (минорная версия): Увеличивается, когда вы добавляете новую функциональность, сохраняя обратную совместимость. Например:
1.1.0。 - PATCH (патч-версия): Увеличивается, когда вы исправляете ошибки, не добавляя новую функциональность. Например:
1.0.1。
Дополнительные метки
- Предварительная версия: например
1.0.0-alphaили1.0.0-beta.1, указывая, что эта версия всё ещё тестируется. - Метаданные сборки: например
1.0.0+build.1, который предоставляет информацию о сборке.
Примеры установки
- Установить конкретную версию:
npm install [email protected] - Установить последнюю мажорную версию:
npm install package-name@^1.2.3(установить1.x.xпоследнюю версию)
Часто используемые команды NPM
NPM предоставляет множество команд. Вы можете использоватьnpm helpдля просмотра всех команд.
| Команда | Описание |
|---|---|
npm init | Инициализировать новыйpackage.jsonфайл, интерактивно вводя информацию. |
npm init -y | Быстро создатьpackage.jsonфайл с настройками по умолчанию. |
npm install package-name | Установить указанный пакет локально. |
npm install -g package-name | Установить указанный пакет глобально, сделав его доступным во всей системе. |
npm install | Установкаpackage.jsonвсе зависимости, перечисленные в |
npm install package-name --save-dev | Установить пакет и добавить его вdevDependencies。 |
npm update package-name | Обновить указанный зависимый пакет. |
npm uninstall package-name | Удалить указанный зависимый пакет. |
npm uninstall -g package-name | Удалить указанный пакет глобально. |
npm list | Просмотреть список установленных пакетов зависимостей для текущего проекта. |
npm list -g --depth=0 | Просмотреть список глобально установленных пакетов зависимостей (без раскрытия дерева зависимостей). |
npm info package-name | Просмотреть подробную информацию о пакете, включая версию и зависимости. |
npm login | Войти в свою учетную запись NPM. |
npm publish | Опубликовать текущий пакет в реестре NPM. |
npm unpublish package-name | Отменить публикацию пакета в реестре NPM (обычно возможно только в течение 24 часов). |
npm cache clean --force | Очистить кэш NPM. |
npm audit | Проверить зависимости проекта на наличие уязвимостей безопасности. |
npm audit fix | Автоматически исправлять известные уязвимости. |
npm run script-name | Запуститеpackage.jsonскрипт, определённый в , напримерnpm run start。 |
npm start | Запуститеstartскрипт (эквивалентноnpm run start)。 |
npm test | Запуститеtestскрипт. |
npm build | Запуститеbuildскрипт. |
npm outdated | Показать список пакетов зависимостей в проекте, для которых доступны обновления. |
npm version patch/minor/major | Updatepackage.jsonномер версии в , автоматически обновляя версию. |
npm ci | Используйтеpackage-lock.jsonдля быстрой установки зависимостей, подходит для сред CI/CD. |
Помимо того, что рассмотрено в этой главе, NPM предоставляет множество других возможностей, а package.json также имеет много других полезных полей.
Помимо возможностиhttps://docs.npmjs.com/просмотреть официальную документацию по адресу , ниже приведены некоторые другие часто используемые команды NPM.
Использование зеркала NPM Taobao
Поскольку прямое использование официального зеркала npm в Китае очень медленное, для решения этой проблемы мы можем использовать зеркало, предоставляемое Taobao (cnpm или путём настройки NPM), чтобы ускорить загрузку и установку пакетов.
Зеркало NPM Taobao — это полное зеркало npmjs.org. Вы можете использовать его для замены официальной версии (только для чтения). Частота синхронизации в настоящее время — раз в 10 минут, чтобы обеспечить максимально возможную синхронизацию с официальным сервисом.
Вы можете использовать настроенный в Taobao инструмент командной строки cnpm (с поддержкой сжатия gzip) для замены стандартного npm:
$ npm install -g cnpm --registry=https://registry.npmmirror.com
Далее мы можем использовать cnpm вместо npm для установки и управления пакетами:
$ cnpm install [name]
Описание и использование package.json
package.json — это основной файл в проекте Node.js, содержащий метаданные проекта, зависимости, скрипты и другую информацию.
Файл package.json используется для описания метаданных проекта и зависимостей. Обычно он находится в корневом каталоге проекта и служит файлом конфигурации проекта.
Файл package.json — это файл в формате JSON, содержащий следующие основные поля:
name: Название проекта, которое должно быть уникальным и обычно состоять из строчных букв и дефисов.version: Номер версии проекта, соответствующий семантическому версионированию.description: Краткое описание проекта.main: Входной файл проекта, обычно файл запуска приложения.scripts: Определяет серию скриптов командной строки, которые могут выполнять определённые задачи в проекте.dependencies: Перечисляет все пакеты зависимостей, необходимые для запуска проекта, и их версии.devDependencies: Перечисляет пакеты зависимостей и их версии, необходимые только во время разработки.peerDependencies: Перечисляет пакеты, от которых, как ожидает проект, должны также зависеть его пакеты зависимостей.optionalDependencies: Перечисляет необязательные пакеты зависимостей.engines: Указывает версию Node.js, совместимую с проектом.repository: Информация о репозитории с кодом проекта, например URL репозитория GitHub.keywords: Ключевые слова проекта, помогающие найти проект при поиске в npm.author: Информация об авторе проекта.license: Информация о лицензии проекта.
Использование:
-
Инициализируйте проект: Запустите
npm initв каталоге проекта, и npm поможет вам создатьpackage.jsonфайл, или автоматически сгенерироватьpackage.json。 -
Установка зависимостей: используйте
npm install <package-name>команду для установки зависимостей. npm автоматически добавит зависимости вpackage.jsonв файлеdependenciesилиdevDependenciesи создастpackage-lock.jsonфайл для фиксации версий зависимостей. -
Управление скриптами: определяйте команды в
scriptsполе, например"start": "node app.js", после чего вы можете использоватьnpm startкоманду для запуска этих скриптов. -
Контроль версий: используйте
npm versionкоманда для управления номером версии проекта. npm автоматически обновит номер версии вpackage.jsonи создаст новый Git-тег. -
Опубликовать пакет: Когда проект готов к публикации в npm, вы можете использовать
npm publishкоманду, и npm прочитает информацию вpackage.jsonдля публикации пакета. -
Управление зависимостями:
package.jsonиpackage-lock.jsonработают вместе с файлом, чтобы обеспечить согласованные версии зависимостей в разных средах.
Типичная структура файла package.json выглядит следующим образом:
Пример
"name": "my-project",
"version": "1.0.0",
"description": "Простой проект Node.js",
"main": "app.js",
"scripts": {
"start": "node app.js",
"test": "echo \"Ошибка: тест не указан\" && exit 1"
},
"dependencies": {
"express": "^4.17.1"
},
"devDependencies": {
"nodemon": "^2.0.20"
},
"keywords": ["node", "npm", "example"],
"author": "Ваше имя",
"license": "MIT"
}
Описания полей:
| Поле | Описание |
|---|---|
| name | Название проекта, обычно строчные буквы и дефисы. |
| version | Номер версии проекта, следующийязыкзначениепреобразованиеверсияспецификация (SemVer)。 |
| description | Краткое описание проекта. |
| main | Входной файл проекта, по умолчаниюindex.js。 |
| scripts | Определяет исполняемые команды скриптов для проекта, такие какnpm start。 |
| dependencies | Библиотеки зависимостей, необходимые во время выполнения, добавляемые при установке вnode_modules。 |
| devDependencies | Библиотеки зависимостей, используемые во время разработки, не устанавливаются в производственных средах. |
| keywords | Массив ключевых слов, помогающий описать проект и найти его в поиске NPM. |
| author | Информация об авторе проекта. |
| license | Тип лицензии проекта, напримерMIT、ISC。 |
Преимущества использования package.json
- Управление зависимостями: Централизованное управление зависимостями проекта и их версиями.
- Автоматизация задач: С помощью
scriptsполя можно удобно запускать часто используемые задачи. - Контроль версий: Обеспечение согласованности проекта и версий его зависимостей, что упрощает командную работу.
- Описание проекта: Предоставление метаданных о проекте, что упрощает публикацию и обмен.
Управление зависимостями
dependencies: Хранит зависимости, необходимые для запуска проекта.
"dependencies": {
"express": "^4.17.1"
}
При установке зависимостей используйте:
npm install express
devDependencies: Содержит зависимости, необходимые во время разработки проекта.
"devDependencies": {
"nodemon": "^2.0.20"
}При установке зависимостей используйте:
npm install nodemon --save-dev
Поле scripts
Поле scripts используется для определения команд, которые можно выполнить через npm run <script>. Обычно используемые скрипты включают:
"scripts": {
"start": "node app.js",
"test": "jest",
"build": "webpack --mode production",
"dev": "nodemon app.js"
}Пример запуска скриптов:
npm run dev # 执行 "nodemon app.js" npm start # 等同于 "node app.js",可以直接用 npm start 运行
Объяснение символов в номерах версий
^(каретка): означает установку последней версии, совместимой с текущей мажорной версией. Например,^4.17.1установит4.x.xпоследнюю версию в .~(тильда): означает установку последней версии, совместимой с текущей минорной версией. Например,~4.17.1установит4.17.xпоследнюю версию в .
Часто используемые команды
Инициализация файла package.json:
npm init
Использование npm init -y позволяет быстро создать файл package.json по умолчанию.
Просмотр зависимостей проекта:
npm list --depth=0
Обновление зависимостей:
npm update package-name
Примечания
- Сделайте
package.jsonфайл кратким и точным, избегая ненужных полей. - Используйте
package-lock.jsonчтобы зафиксировать версии зависимостей и обеспечить согласованность проекта в разных средах. - Регулярно обновляйте зависимости, чтобы использовать последние функции и исправления безопасности.
Для получения дополнительной информации см.:https://npmmirror.com/。
Другие расширения