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 🌹.
Приватные пакеты¶
Если вам нужен приватный пакет для вашей компании / команды / предприятия, вам необходимо подписаться на платный план, подробности здесь.
Конечно, вам нужна учетная запись с соответствующими разрешениями для установки приватного пакета.