Как отсеить пакеты devDependencies от пакетов dependencies?

В NPM (Node Package Manager) есть два основных типа зависимостей - dependencies и devDependencies. Различие между ними в том, что dependencies - это пакеты, необходимые для работы вашего приложения в рабочей среде, в то время как devDependencies - это пакеты, необходимые только для разработки и тестирования вашего приложения.

Чтобы отсеять пакеты devDependencies от пакетов dependencies, вы можете использовать различные подходы в зависимости от того, как вы планируете использовать или управлять своими зависимостями.

1. При установке пакетов:

В файле package.json, который находится в корневой папке вашего проекта, вы можете указать, какие пакеты должны быть установлены в качестве dependencies или devDependencies. Для этого вам необходимо добавить ключ "dependencies" или "devDependencies" соответственно. Например:

{
  "dependencies": {
    "express": "^4.17.1",
    "lodash": "^4.17.21"
  },
  "devDependencies": {
    "mocha": "^9.1.3",
    "eslint": "^8.1.0"
  }
}

Когда вы запускаете команду npm install, NPM установит пакеты, перечисленные в dependencies, и пакеты, перечисленные в devDependencies. Однако, если вы запустите команду npm install --production, то будут установлены только пакеты dependencies, а devDependencies будут проигнорированы.

2. При использовании пакетов:

Если необходимо использовать только пакеты dependencies в вашем коде, то вы можете использовать проверку типов или условные операторы для определения, какие пакеты использовать. Например, в Node.js вы можете использовать условный оператор process.env.NODE_ENV для этой цели. Например:

if (process.env.NODE_ENV === 'production') {
  // использовать только пакеты dependencies
  const express = require('express');
} else {
  // использовать и пакеты dependencies и devDependencies
  const express = require('express');
  const mocha = require('mocha');
}

Таким образом, в рабочей среде только пакет express будет использоваться, а в разработке будет использоваться и пакет mocha.

3. При удалении пакетов:

Если у вас уже установлены пакеты devDependencies и вы хотите удалить их из вашего проекта, вы можете использовать команду npm prune --production. Эта команда удалит все пакеты devDependencies из папки node_modules, оставив только пакеты dependencies.

В итоге, отсеять пакеты devDependencies от пакетов dependencies можно при установке пакетов с использованием package.json, при использовании пакетов в коде или при удалении пакетов с использованием команды npm prune --production. Выбор способа зависит от ваших конкретных потребностей и настроек проекта.