Как мне определить, какие пакеты npm являются просто одноранговыми зависимостями? - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь удалить неиспользуемые пакеты из файлов package.json для нескольких проектов, но у меня возникают проблемы с одноранговыми зависимостями.Существуют некоторые инструменты, такие как depcheck, которые пытаются перечислить все «неиспользуемые» пакеты, но не различают фактические неиспользуемые пакеты и пакеты, которые не используются, поскольку они являются одноранговыми зависимостями.

Существует ли какой-либо пакет или какая-то команда npm, с которой я не знаком, которая позволит мне либо перечислить все равноправные зависимости в моем проекте, либо, по крайней мере, позволить мне ввести имя пакета?и посмотреть, установлен ли этот пакет, потому что это одноранговая зависимость другого пакета?

Для потомков, вот пример только зависимостей для одного из моих проектов.В этом проекте я знаю, например, что reflect-metadata является зависимостью от равноправных узлов @nestjs/common, но я обнаружил это только после его удаления.

"dependencies": {
    "@google-cloud/storage": "^3.2.1",
    "@google-cloud/vision": "^1.3.0",
    "@google/maps": "^0.5.5",
    "@nestjs/common": "^6.6.7",
    "@nestjs/core": "^6.6.7",
    "@nestjs/platform-express": "^6.6.7",
    "@slack/webhook": "^5.0.1",
    "@typeform/api-client": "^1.5.1",
    "algoliasearch": "^3.34.0",
    "array-uniq": "^2.1.0",
    "basic-auth": "^2.0.1",
    "child-process-promise": "^2.2.1",
    "class-transformer": "^0.2.3",
    "class-validator": "^0.10.0",
    "express": "^4.17.1",
    "firebase-admin": "^8.5.0",
    "firebase-functions": "^3.2.0",
    "geoip-lite": "^1.3.8",
    "geolib": "^3.0.4",
    "glob": "^7.1.4",
    "hbs": "^4.0.4",
    "hubspot-api": "^2.2.10",
    "json2csv": "^4.5.3",
    "lodash": "^4.17.15",
    "luxon": "^1.17.2",
    "node-fetch": "^2.6.0",
    "postmark": "^2.2.9",
    "promise-settle": "^0.3.0",
    "qrcode": "^1.4.1",
    "redux": "^4.0.4",
    "reflect-metadata": "^0.1.13",
    "rxjs": "^6.5.3",
    "sales-tax": "^2.0.10",
    "sanitize-filename": "^1.6.3",
    "sharp": "^0.23.0",
    "stripe": "^7.9.0"
  },

Ответы [ 2 ]

1 голос
/ 24 сентября 2019

check-peer-deps

Проверяет соответствие требованиям peerDependency всех зависимостей верхнего уровня.

Установка

Вы можете установить это в своей системе с помощью:

npm i -g check-peer-deps

Обратите внимание, что для этой утилиты требуется npm.

Использование

Просто перейдите в каталог проекта, в котором вы хотите проверить peerDependencies и запустить программу.

cd foobar

check-peer-deps

Если минимальные версии всех ваших peerDependencies высшего уровня удовлетворены, тогда не будет никакого вывода, в противном случае вы увидите нечто похожее на это:

check-peer-deps Aзависимость, удовлетворяющая eserint-config-airbnb-base, peerDependency 'eslint@^4.9.0' не найдена!Текущий: eslint@^4.6.0 Зависимости пакета могут удовлетворить peerDependency?Да

Это говорит о том, что eslint-config-airbnb-base требует eslint@^4.9.0 в качестве peerDependency, но в настоящее время в проекте указывается только eslint@^4.6.0, что позволяет решить потенциальную проблемувозникать, если eslint@4.6.0 был установлен и не обновлен перед установкой.Выходные данные также сообщают, что, хотя минимально допустимая версия слишком мала, максимально допустимая версия удовлетворяет требованию peerDependencies.

install-peers-cli

CLI дляустановить peerDependencies проекта, без побочных эффектов.Работает с нпм, пряжа.Поддерживает поток рабочих областей пряжи.

Установка пряжи

$ пряжа добавить --dev install-peers-cli npm

$ npm установить --save-dev install-peers-cli

Использование Добавить скрипт package.json:

{"scripts": {"install-peers": "install-peers"}}

Затем запустить yarn install-peers(или npm run install-peers) для установки зависимостей пира вашего проекта.Он не будет обновлять файлы блокировки или модифицировать package.json, сохраняя ваши настройки чистыми и чистыми.Любой другой сценарий жизненного цикла может использоваться в зависимости от вашего варианта использования.

Вы все еще можете видеть предупреждения «неудовлетворенная зависимость от однорангового узла» во время обычной фазы установки из-за потока установки npm / yarn.

0 голосов
/ 24 сентября 2019

После того, как вы выполните npm install, появится файл package-lock.json.Анализируя файл package-lock.json , вы можете понять зависимости каждого пакета.Для более подробной информации этот блог может быть передан.

Зависимости пакета необходимы для правильного запуска пакета.Но есть некоторые необязательные зависимости, которые можно пропустить.При установке вы можете использовать аргумент --no-optional, чтобы эти дополнительные пакеты не были установлены.Но убедитесь, что ваше приложение работает нормально без этих дополнительных пакетов.

...