Цікавий факт:
npm
— це не абревіатура, тому не можно розширити його на окреми слова, але його зазвичай називаютьменеджер пакунків (node package manager)
.
npm
— це бінарний файл, який постачається разом зі стандартними установками node
, які використовуються для керування спільними пакетами JavaScript / TypeScript.
- Пакети NPM розміщено (і вони можуть бути інсталовані з) https://www.npmjs.com/ (☁️).
Швидке налаштування.
- пакети npm налаштовуються за допомогою файлу
package.json
. Ви можете швидко створити цей файл за допомогоюnpm init -y
. - пакети встановлюються в папку
./node_modules
. Зазвичай назва цієї папки є у вашому.gitignore
.
Навіть якщо ви створюєте програму, наявність
package.json
також робить ваш проект пакетом. Отже, термінипроект| пакет (project | package)
можна використовувати як взаємозамінні.
Коли ви перевіряєте роботу іншого пакету, він матиме package.json
, який містить список залежностей, необхідних для запуску проекту. Ви просто запускаєте npm install
, та npm перенесе всі потрібні пакети із хмарного середовища ☁️.
Встановлення пакета.
Ви можете запустити npm install <назва пакету>
. Більшість розробників використовуватиме скорочений варіант команди - npm i <назва пакету>
.Наприклад, якщо ви бажаєте встрановити пакет React
// Встановити react
npm i react
Це також автоматично додасть
react
дозалежностей
вашогоpackage.json
.
Встановлення devDependency
devDependencies
— це залежності, які потрібні лише під час розробки вашого проекту та не потрібні після його розгортання на сервері.
typescript
є поширеним у devDependencies
, оскільки він потрібен лише для перетворення файлів .ts -> .js
. Зазвичай ви розгортаєте на сервері скомпільовані файли .js
:
- у продакшн
- АБО для використання іншими пакетами npm
Безпека
Загальнодоступні пакунки npm
скануються командою безпеки по всьому світу, і про проблеми повідомляються команді npm. Потім вони випускають поради щодо безпеки з докладним описом проблеми та можливих виправлень. Зазвичай виправлення полягає в простому оновленні пакета.
Ви можете запустити аудит свого проекту, просто запустивши npm audit
. Це висвітлить будь-які вразливості, які можуть існувати в пакеті / залежностях пакета. Наприклад:
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Низкий │ Відмова в обслуговуванні регулярного виразу │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Пакет │ debug │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Залежить від │ jest [dev] │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Путь │ jest > jest-cli > istanbul-lib-source-maps > debug │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Більше інф │ https://nodesecurity.io/advisories/534 │
└───────────────┴──────────────────────────────────────────────────────────────┘
Зауважте, що зазвичай проблеми виникають у залежностях розробки (devDependencies) (наприклад, у цьому випадку пакет jest). Оскільки вони не є частиною вашої продакшн збірки, швидше за все, ваша робоча програма не є вразливою. Але хороша практика, щоб вразливості залишалися 0
.
Просто додайте npm audit
(команда завершить виконання з кодом 1
у разі помилки) як частину вашого розгортання, щоб забезпечити актуальність проектів.
Що таке --
у скриптах.
Ви можете створити базовий скрипт з обмеженим набором аргументів командного рядка, наприклад, ось цільовий скрипт, який запускає tsc
для компілятора TypeScript:
{
"scripts": {
"build": "tsc -p ."
}
}
Ви можете створити посилання build:watch
для запуску tsc -p. -w
або, як альтернатива, попросити npm запустити build
з додатковим прапором -w
так:
{
"scripts": {
"build": "tsc -p .",
"build:watch": "npm run build -- -w"
}
}
Ви можете передати скільки завгодно прапорців після --
, наприклад, у наступному прикладі build:more
має той самий ефект, що something --foo -f -d --bar
{
"scripts": {
"build": "something --foo",
"build:more": "npm run build -- -f -d --bar"
}
}
Публічні чи приватні пакети. Вам не потрібно щось змінювати, коли використовуєте будь-який з поширених публічних пакетів npm. Просто знайте, що приватні пакети створюють для корпоративних/комерційних клієнтів.
Публічні пакети.
- За замовчуванням пакети загальнодоступні.
- Кожен може створити власний пакет для npm.
- Вам просто потрібен обліковий запис (який ви можете отримати безкоштовно).
Нікому не потрібен обліковий запис, щоб завантажити публічний пакет.
Цей безкоштовний обмін пакетами є однією з ключових причин успіху npm 🌹.
Приватні пакети.
Якщо вам потрібен приватний пакет для вашої компанії/команди/підприємства, вам потрібно купити платну підписку, деталі тут: https://www.npmjs.com/pricing
Звичайно, вам потрібен обліковий запис із відповідними дозволами для завантаження приватного пакета.