如何确定特定软件包的安装原因?换句话说,什么包依赖于这个包?
有问题的包裹是babelify。 npm ls
在顶层显示它,但它在任何地方都没有包含在package.json中。
答案 0 :(得分:3)
npm explain <package name>
正是您要找的。它通过显示“自下而上”视图来解释一个包为什么在您的 node_modules 文件夹中。查看文档 here
答案 1 :(得分:1)
如果找不到require
或import
,请尝试查看孩子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
答案 2 :(得分:1)
您提到过,npm ls
显示了软件包及其依赖性:
> npm ls leveldown
appless@5.0.0 C:\Users\mikem\Code\appless
`-- @architect/architect@5.7.0
`-- dynalite@2.2.0
`-- UNMET OPTIONAL DEPENDENCY leveldown@4.0.2
如果npm ls
在顶层显示,并且它不是顶层package.json
的依赖项,则以前可能是必需的,现在不再使用。
答案 3 :(得分:0)
答案 4 :(得分:0)
我的一线话,基于其他答案:npm ls | grep -C 10 PACKAGE
用您要寻找的包装代替包装。这比其他建议更简单,更快捷。贝壳是你的朋友,朋友!
故障/说明
npm ls
-如上所述,这将打印应用程序的依赖关系树表示形式。|
-* nix贝壳的秘密调味料。这会将输出发送到下一个程序,而不是打印它。grep [...] PACKAGE
-搜索字符串“ PACKAGE”(这实际上是正则表达式,但这无关紧要。)-C 10
-这告诉grep在匹配的行周围打印10条额外的行。没有这个,grep将只打印找到PACKAGE的行。增加此数字将为您提供更多上下文。如果-C
在您的系统上不起作用(较不常见的linux版本),请尝试使用-B 10 -A 10
。这是做同样事情的一种更冗长的方法:“前10行,后10行。” 答案 5 :(得分:-3)
您可以针对require("babelify")
对项目进行全局搜索。如果您在项目中的任何位置找不到它,这可能意味着不需要此依赖项,并且可以安全地从node_modules
文件夹中删除它。
请注意,如果您执行npm install babelify
,则不会在package.json
中添加引用。您必须npm install --save-dev babelify
才能在package.json
文件上引用此依赖关系。