2017-05-06 131 views
2

我想弄清楚npm依賴關係到底發生了什麼。npm依賴關係的意義

我的問題的最短特定形式是:由於我的傳遞依賴關係圖使用不同版本多次調用某個包,爲什麼這些不同的版本在npm list或文件系統中都不顯示?

我不想用垃圾混淆全局名稱空間只是爲了測試,所以會使用我當前的實際項目;我覺得它足夠小,可以清晰。

C:\ayane>npm list 
[email protected] C:\ayane 
+-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
| `-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| +-- [email protected] 
| | `-- [email protected] 
| | +-- [email protected] 
| | `-- [email protected] 
| +-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
| `-- [email protected] 
+-- [email protected] 
+-- [email protected] 
+-- [email protected] 
`-- [email protected] 

這看起來到目前爲止,除了ayane取決於clause-normal-form 2.4.0但dimacs-parsertptp-parser取決於clause-normal-form 2.3.0罰款;爲什麼沒有在上面顯示?

C:\ayane>tree /a 
Folder PATH listing for volume OS 
Volume serial number is C685-B1F1 
C:. 
\---node_modules 
    +---.bin 
    +---balanced-match 
    +---big-integer 
    +---big-rational 
    +---brace-expansion 
    +---clause-normal-form 
    +---clone 
    +---command-files 
    +---commander 
    +---concat-map 
    | +---example 
    | \---test 
    +---dimacs-parser 
    +---fs.realpath 
    +---get-stdin 
    +---glob 
    +---graceful-readlink 
    +---inflight 
    +---inherits 
    +---iop 
    +---lodash 
    | \---fp 
    +---minimatch 
    +---once 
    +---path-is-absolute 
    +---tptp-parser 
    \---wrappy 

同樣的問題:爲什麼只有一個clause-normal-form目錄出現?

回答

1

這可能是因爲它只會安裝相同模塊的一個版本,除非另有說明。如果clause-normal-form版本2.3.0和2.4.0不兼容,那麼這將是一個問題,如果它們可能會遇到一些麻煩。爲了獲得最佳的解決方案,使你的代碼工作沒有問題,你需要在package.json

https://nodejs.org/en/blog/npm/peer-dependencies/

PS使用peerDependencies:這不會對NPM版本工作3及以上的,它只會給予警告爲我們安裝他們手動

+0

你是對的!如果它們在主要版本上有所不同,它可以處理兩者。 – rwallace