NPM: Почему этот пакет установлен?

Как определить, почему установлен конкретный пакет? Другими словами, какой пакет зависит от этого пакета?

Этот пакет является babelify. npm ls показывает его на верхнем уровне, но он не включен в package.json в любом месте.

Ответ 1

Используйте npm ls для просмотра списка установленных пакетов.

Ответ 2

Как вы упоминаете, npm ls показывает пакеты и их зависимости:

> npm ls leveldown
[email protected] C:\Users\mikem\Code\appless
'-- @architect/[email protected].7.0
  '-- [email protected]
    '-- UNMET OPTIONAL DEPENDENCY [email protected]

Если npm ls показывает его на верхнем уровне, а это не зависимость на верхнем уровне package.json, скорее всего, это ранее требовалось и больше не используется.

Используйте npm prune, чтобы удалить неиспользованный пакет.

Ответ 3

Если вы не можете найти require или import, попробуйте посмотреть на child package.json чтобы узнать, кому он еще нужен.

(Примечание: find требует Linux/macOS, это не будет работать в Windows)

find. -name package.json -exec grep -l babelify/dev/null {} \;

./node_modules/browserify-zlib/package.json
./node_modules/cssnext/package.json
./node_modules/cypress/dist/Cypress.app/Contents/Resources/app/packages/reporter/package.json
./node_modules/cypress/dist/Cypress.app/Contents/Resources/app/packages/server/node_modules/@cypress/browserify-preprocessor/package.json
./node_modules/cypress/dist/Cypress.app/Contents/Resources/app/packages/server/node_modules/async/package.json
./node_modules/cypress/dist/Cypress.app/Contents/Resources/app/packages/server/node_modules/babel-core/package.json
./node_modules/cypress/dist/Cypress.app/Contents/Resources/app/packages/server/node_modules/babelify/package.json
./node_modules/cypress/dist/Cypress.app/Contents/Resources/app/packages/server/node_modules/getos/node_modules/async/package.json
./node_modules/cypress/dist/Cypress.app/Contents/Resources/app/packages/server/node_modules/object-assign/package.json
./node_modules/cypress/dist/Cypress.app/Contents/Resources/app/packages/server/node_modules/watchify/node_modules/browserify-zlib/package.json
./node_modules/cypress/dist/Cypress.app/Contents/Resources/app/packages/server/package.json
./node_modules/eslint/package.json
./node_modules/extract-text-webpack-plugin/node_modules/async/package.json
./node_modules/getos/node_modules/async/package.json
./node_modules/postcss-modules-extract-imports/package.json
./node_modules/postcss-modules-scope/package.json
./node_modules/webpack/node_modules/async/package.json

Ответ 4

Там есть модуль npm-why который определяет, почему пакет был установлен.

Конечно, если вы используете yarn, у вас есть встроенная команда yarn why.