NPM¶
Интересный факт npm
- это не аббревиатура, но обычно его называют node package manager
.
npm
- это двоичный файл, который поставляется с nodejs
по умолчанию и используется для управления JavaScript / TypeScript пакетами.
- Пакеты NPM размещаются и устанавливаются с npmjs.com (☁️).
Быстрая стандартная настройка¶
- Пакеты npm настраиваются с помощью файла
package.json
. Вы можете быстро сгенерировать файл, используяnpm init -y
. - Пакеты устанавливаются в
./node_modules
папку. Обычно эта папка указана в вашем.gitignore
.
Даже если вы, возможно, создаете приложение, наличие package.json
по сути также делает ваш проект пакетом. Так что правила для вашего проекта | пакета
одинаковы.
Когда вы проверяете чей-то (вашей команды) проект, в нем будет package.json
, в котором будут перечислены зависимости, необходимые для запуска проекта. Вы просто запускаете npm install
, и npm загружает их из облака ☁️.
Установка пакета¶
Вы можете запустить npm install <что-то>
. Большинство людей будут использовать сокращение npm i <что-то>
, например:
1 2 |
|
Это также автоматически добавит react
в поле dependencies
вашего package.json
.
Установка devDependency¶
devDependencies
- это зависимости, которые требуются только во время разработки вашего проекта, и не требуются в публикации.
typescript
распространен в devDependencies
, поскольку он требуется только для сборки .ts -> .js
. Обычно вы публикуете собранные файлы .js
:
- при публикации
- ИЛИ для использования другими пакетами npm
Безопасность¶
Общедоступные пакеты npm
тщательно проверяются командой безопасности по всему миру, и о проблемах сообщается команде npm. Затем они выпускают рекомендации по безопасности с подробным описанием проблемы и потенциальных исправлений. Обычно исправление заключается в простом обновлении пакета.
Вы можете запустить аудит своего проекта узла с помощью команды npm audit
. Это укажет на любые уязвимости, которые могут существовать в пакете / зависимостях пакета. Например:
Low | Regular Expression Denial of Service |
---|---|
Package | debug |
Dependency of | jest [dev] |
Path | jest > jest-cli > istanbul-lib-source-maps > debug |
More info | https://nodesecurity.io/advisories/534 |
Обратите внимание, что обычно проблемы обнаруживаются в devDependency(например, jest в данном случае). Поскольку они не являются частью ваших финальных публикаций, скорее всего, ваше финальное приложение не подвержено уязвимостям. Но по-прежнему рекомендуется сохранять количество уязвимостей в размере 0
.
Просто добавьте npm audit
(команда имеет код ошибки 1
в случае ошибки) как часть вашего процесса публикации, чтобы обеспечить актуальность проектов.
Скрипты NPM¶
Что означает --
в скриптах¶
Вы можете создать базовый скрипт с ограниченным набором параметров командной строки, например: вот сценарий, который запускает tsc
для компилятора TypeScript:
1 2 3 4 5 |
|
Вы можете создать скрипт build:watch
для запуска tsc -p . -w
или, альтернативно, попросить npm запустить сборку
с дополнительным флагом -w
, например:
1 2 3 4 5 6 |
|
Вы можете передать сколько угодно флагов после --
, например в следующем примере build: more
имеет тот же эффект, что и something --foo -f -d --bar
1 2 3 4 5 6 |
|
Публичные и приватные пакеты¶
Вам это не нужно при использовании любых общедоступных пакетов npm. Просто знайте, что это для корпоративных / коммерческих клиентов.
Публичные пакеты¶
- По умолчанию пакеты являются публичными.
- Кто угодно может публиковать пакет в npm.
- Вам просто нужна учетная запись для публикации (которую можно получить бесплатно).
Но никому не нужна учетная запись для установки общедоступного пакета.
Бесплатный обмен пакетами - одна из главных причин успеха npm
🌹.
Приватные пакеты¶
Если вам нужен приватный пакет для вашей компании / команды / предприятия, вам необходимо подписаться на платный план, подробности здесь.
Конечно, вам нужна учетная запись с соответствующими разрешениями для установки приватного пакета.