Типи залежностей

Залежності слугують багатьом цілям. Деякі залежності необхідні, щоб побудувати ваш проект, інші - щоб запустити його. Таким чином, існує багато різних типів залежностей, які ви можете мати (наприклад: dependencies, devDependencies та peerDependencies).

Ваш package.json буде мати всі ці залежності:

{
  "name": "my-project",
  "dependencies": {
    "package-a": "^1.0.0"
  },
  "devDependencies": {
    "package-b": "^1.2.1"
  },
  "peerDependencies": {
    "package-c": "^2.5.4"
  },
  "optionalDependencies": {
    "package-d": "^3.1.0"
  }
}

Більшість людей мають лише dependencies так devDependencies, але краще зрозуміти навіщо треба всі типи залежностей.

dependencies

Це ваші звичайні залежності, інакше кажучи - залежності, які необхідні для виконання вашого коду (наприклад React або ImmutableJS).

devDependencies

Це ваші розробницькі залежності. Вони необхідні для певних фаз розробки, але не для виконання вашого коду (наприклад: Babel, Flow).

peerDependencies

Рівноправні залежності - це спеціальний тип залежностей, які потрібні лише під час публікації вашого власного пакету.

Маючи рівноправну залежність означає, що вашому пакету необхідно, щоб людина, яка встановлює його, вказали у своєму пакету таку ж саму версію. Це корисно для таких пакетів як react, якому необхідно мати одну копію react-dom, який використовується людиною, яка ставить ваш пакет.

optionalDependencies

Необов’язкові залежності: вони просто необов’язкові. Якщо вони не поставляться, то Yarn все одно продовжить процес установки.

Це корисно для тих залежностей, які не обов’язково будуть працювати на кожному комп’ютері, і у яких є запасний план на випадок, якщо їх не поставлять (наприклад: Watchman).

bundledDependencies

Масив імен пакеті, які будуть зібрані разом під час публікації пакету.

Зібрані залежності мають бути в середині вашого проекту. Вони функціонують так само як і звичайні залежності. Вони також будуть запаковані під час виконання yarn pack.

Звичайні залежності зазвичай встановлюються із npm реєстру. Зібрані залежності корисні у випадках, коли звичайних не вистачає:

  • Якщо ви хочете використовувати чужу бібліотеку, якої не існує в npm реєстрі, або яку ви змінили власноруч.
  • Якщо ви хочете перевикористати ваші власні проекти або модулі.
  • Якщо ви хочете розповсюдити деякі файлі в вашому модулі.