[英]How do I identify which npm packages are just peer dependencies?
我正在嘗試從 package.json 文件中刪除一些項目的未使用包,但我遇到了對等依賴項的問題。 有一些工具,例如depcheck
,會嘗試列出所有“未使用”的包,但它不會區分實際未使用的包和未使用的包,因為它們是對等依賴項。
是否有 package 或一些我不熟悉的npm
命令,這將允許我列出我的項目中的所有對等依賴項,或者至少允許我輸入 ZEFE90A8E604A7C840D788D安裝 package 是因為它是另一個 package 的對等依賴項?
對於后代,這是我的一個項目的依賴項的示例。 在這個項目中,我知道例如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"
},
這是一個很好的問題,不知道為什么它被否決了。 不幸的是,我不知道有一種現有的、自動化程度很高的方法來做到這一點。
您可以像這樣測試單個 package:
npm uninstall some-package && npm ls
如果有任何對等依賴違規,它們將被打印出來並且命令將退出非零。
因此,您可以將它與提到的其他工具之一的 output 結合起來,遍歷孤立包的候選者,一個一個地刪除它們,並在每次更改之間測試 output。 然后執行npm uninstall --save
以提交未產生錯誤的錯誤,或npm install
回滾錯誤。 這可以是自動化的,但我將把它作為練習留給讀者。
檢查同行部門
驗證是否滿足所有頂級依賴項的 peerDependency 要求。
安裝
你可以在你的系統上安裝它:
npm i -g check-peer-deps
請注意,此實用程序需要 npm 可用。
用法
只需切換到您希望檢查 peerDependencies 的項目目錄並運行程序。
cd foobar
檢查同行部門
如果滿足所有頂級 peerDependencies 的最低版本,則不會有 output,否則您將看到類似以下內容:
check-peer-deps 找不到滿足 eslint-config-airbnb-base 的 peerDependency 的“eslint@^4.9.0”的依賴項:當前。 eslint@^4.6?0 Package 依賴能否滿足peerDependency? 是的
這告訴你 eslint-config-airbnb-base 需要 eslint@^4.9.0 作為 peerDependency,但該項目目前只指定 eslint@^4.6.0,如果安裝了 eslint@4.6.0,可能會出現問題並且在安裝之前沒有更新。 output 也告訴你,雖然最低允許版本太低,但最高允許版本確實滿足 peerDependencies 要求。
安裝-peers-cli
CLI 安裝項目的 peerDependencies,沒有副作用。 適用於 npm,紗線。 支持紗線工作區流。
安裝紗線
$紗線添加--dev install-peers-cli npm
$ npm install --save-dev install-peers-cli
添加 package.json 腳本:
{“腳本”:{“安裝對等體”:“安裝對等體”}}
然后運行 yarn install-peers(或 npm run install-peers)來安裝項目的對等依賴項。 它不會更新鎖定文件或修改 package.json,讓您的設置保持純凈。 根據您的用例,可以使用任何其他生命周期腳本。
由於 npm/yarn 的安裝流程,您仍然可能在常規安裝階段看到“未滿足對等依賴性”警告。
執行npm install
后,將有一個名為 package-lock.json 的文件。 通過分析package-lock.json文件,可以了解每個package的依賴關系。 更多細節可以參考這個博客。
package 的正確運行需要 package 的依賴關系。 但是有一些可選的依賴項,可以跳過。 您可以在安裝時使用--no-optional
參數,這樣就不會安裝這些額外的包。 但請確保您的應用程序在沒有這些可選包的情況下運行良好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.