Skip to content

Latest commit

 

History

History
121 lines (86 loc) · 9.14 KB

index.md

File metadata and controls

121 lines (86 loc) · 9.14 KB

NPM

Цікавий факт: npm — це не абревіатура, тому не можно розширити його на окреми слова, але його зазвичай називають менеджер пакунків (node package manager).

npm — це бінарний файл, який постачається разом зі стандартними установками node, які використовуються для керування спільними пакетами JavaScript / TypeScript.

  • Пакети NPM розміщено (і вони можуть бути інсталовані з) https://www.npmjs.com/ (☁️).

Quick common setup

Швидке налаштування.

  • пакети npm налаштовуються за допомогою файлу package.json. Ви можете швидко створити цей файл за допомогою npm init -y.
  • пакети встановлюються в папку ./node_modules. Зазвичай назва цієї папки є у вашому .gitignore.

Навіть якщо ви створюєте програму, наявність package.json також робить ваш проект пакетом. Отже, терміни проект| пакет (project | package) можна використовувати як взаємозамінні.

Коли ви перевіряєте роботу іншого пакету, він матиме package.json, який містить список залежностей, необхідних для запуску проекту. Ви просто запускаєте npm install, та npm перенесе всі потрібні пакети із хмарного середовища ☁️.

Installing a package

Встановлення пакета. Ви можете запустити npm install <назва пакету>. Більшість розробників використовуватиме скорочений варіант команди - npm i <назва пакету>.Наприклад, якщо ви бажаєте встрановити пакет React

// Встановити react
npm i react

Це також автоматично додасть react до залежностей вашого package.json.

Installing a devDependency

Встановлення devDependency devDependencies — це залежності, які потрібні лише під час розробки вашого проекту та не потрібні після його розгортання на сервері.

typescript є поширеним у devDependencies, оскільки він потрібен лише для перетворення файлів .ts -> .js. Зазвичай ви розгортаєте на сервері скомпільовані файли .js:

  • у продакшн
  • АБО для використання іншими пакетами npm

Security

Безпека Загальнодоступні пакунки 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 у разі помилки) як частину вашого розгортання, щоб забезпечити актуальність проектів.

NPM Scripts

What is with -- in scripts

Що таке -- у скриптах. Ви можете створити базовий скрипт з обмеженим набором аргументів командного рядка, наприклад, ось цільовий скрипт, який запускає 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"
  }
}

Public vs. Private packages

Публічні чи приватні пакети. Вам не потрібно щось змінювати, коли використовуєте будь-який з поширених публічних пакетів npm. Просто знайте, що приватні пакети створюють для корпоративних/комерційних клієнтів.

Public packages

Публічні пакети.

  • За замовчуванням пакети загальнодоступні.
  • Кожен може створити власний пакет для npm.
  • Вам просто потрібен обліковий запис (який ви можете отримати безкоштовно).

Нікому не потрібен обліковий запис, щоб завантажити публічний пакет.

Цей безкоштовний обмін пакетами є однією з ключових причин успіху npm 🌹.

Private packages

Приватні пакети.

Якщо вам потрібен приватний пакет для вашої компанії/команди/підприємства, вам потрібно купити платну підписку, деталі тут: https://www.npmjs.com/pricing

Звичайно, вам потрібен обліковий запис із відповідними дозволами для завантаження приватного пакета.