typescript
GitHub
  • README
  • Давайте Почнемо
    • Why TypeScript
  • JavaScript
    • Equality
    • References
    • Null vs. Undefined
    • this
    • Closure
    • Number
    • Truthy
  • Future JavaScript Now
    • Classes
      • Classes Emit
    • Arrow Functions
    • Rest Parameters
    • let
    • const
    • Destructuring
    • Spread Operator
    • for...of
    • Iterators
    • Template Strings
    • Promise
    • Generators
    • Async Await
  • Проект / Project
    • Контекст компіляції / Compilation Context
      • tsconfig.json
      • Які файли / Which Files?
    • Простори Оголошень / Declaration Spaces
    • Модулі / Modules
      • File Module Details
      • global.d.ts
    • Namespaces
    • Dynamic Import Expressions
  • Node.js QuickStart
  • Browser QuickStart
  • Library QuickStart
  • TypeScript's Type System
    • JS Migration Guide
    • @types
    • Ambient Declarations
      • Declaration Files
      • Variables
    • Interfaces
    • Enums
    • lib.d.ts
    • Functions
    • Callable
    • Type Assertion
    • Freshness
    • Type Guard
    • Literal Types
    • Readonly
    • Generics
    • Type Inference
    • Type Compatibility
    • Never Type
    • Discriminated Unions
    • Index Signatures
    • Moving Types
    • Exception Handling
    • Mixins
  • JSX
    • React
    • Non React JSX
  • Options
    • noImplicitAny
    • strictNullChecks
  • Errors in TypeScript
    • Interpreting Errors
    • Common Errors
  • NPM
  • Testing
    • Jest
    • Cypress
  • Tools
    • Prettier
    • Husky
    • ESLint
    • Changelog
  • TIPs
    • String Based Enums
    • Nominal Typing
    • Stateful Functions
    • Currying
    • Type Instantiation
    • Lazy Object Literal Initialization
    • Classes are Useful
    • Avoid Export Default
    • Limit Property Setters
    • outFile caution
    • JQuery tips
    • static constructors
    • singleton pattern
    • Function parameters
    • Build Toggles
    • Barrel
    • Create Arrays
    • Typesafe Event Emitter
  • StyleGuide
  • TypeScript Compiler Internals
    • Program
    • AST
      • TIP: Visit Children
      • TIP: SyntaxKind enum
      • Trivia
    • Scanner
    • Parser
      • Parser Functions
    • Binder
      • Binder Functions
      • Binder Declarations
      • Binder Container
      • Binder SymbolTable
      • Binder Error Reporting
    • Checker
      • Checker Diagnostics
      • Checker Error Reporting
    • Emitter
      • Emitter Functions
      • Emitter SourceMaps
    • Contributing
Powered by GitBook
On this page
  • Quick common setup
  • Installing a package
  • Installing a devDependency
  • Security
  • NPM Scripts
  • What is with -- in scripts
  • Public vs. Private packages
  • Public packages
  • Private packages
Edit on GitHub

NPM

PreviousCommon ErrorsNextTesting

Last updated 1 year ago

Цікавий факт: 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

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

не абревіатура