Типы зависимостей

Зависимости служат многим различным целям. Некоторые зависимости необходимы для построения проекта, другие нужны для запуска программ. Таким образом, существует ряд различных типов зависимостей, которые вы можете иметь (например: 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 или была изменена.
  • Если вы хотите повторно использовать ваши собственные проекты или модули.
  • Если вы хотите распространить некоторые файлы в вашем модуле.