MorJS phantomDependency - 幽靈依賴檢測(cè)

2023-11-07 16:35 更新
  • 類型: ?object? 或 ?boolean?
  • 默認(rèn)值: 開(kāi)發(fā)模式 ?true? | 生產(chǎn)模式 ?false?

開(kāi)啟關(guān)閉或配置幽靈依賴檢測(cè)功能,不配置時(shí)開(kāi)發(fā)模式下默認(rèn)為 ?true? 開(kāi)啟檢測(cè) warn 警告,生產(chǎn)模式下默認(rèn)為 ?false? 關(guān)閉檢測(cè),配置值為 ?object? 時(shí)支持 ?mode? 和 ?exclude? 兩個(gè)屬性:

  • ?mode?: 檢測(cè)模式,可配置為 ?'warn'? 和 ?'error'? 兩種,默認(rèn) ?'warn'? 時(shí)僅進(jìn)行警告,配置為 ?'error'? 時(shí)會(huì)作為錯(cuò)誤拋出
  • ?exclude?: ?Array<string>? 指定哪些 npm 包不作為幽靈依賴從而跳過(guò)檢測(cè)
// 配置示例一:關(guān)閉檢測(cè)(生產(chǎn)模式下默認(rèn))
{
phantomDependency: false
}

// 配置示例二:開(kāi)啟檢測(cè) warn 警告,但是某些包不判斷為幽靈依賴
{
phantomDependency: {
mode: 'warn',
exclude: ['@morjs/utils']
}
}

// 配置示例三:開(kāi)啟檢測(cè) error 警告,但是某些包不判斷為幽靈依賴
{
phantomDependency: {
mode: 'error',
exclude: ['@morjs/utils']
}
}
幽靈依賴: 當(dāng)一個(gè)項(xiàng)目使用了一個(gè)沒(méi)有在其 package.json 中聲明的包時(shí),就會(huì)出現(xiàn)"幽靈依賴"
  • 出現(xiàn)原因: npm 3.x 開(kāi)始「改進(jìn)」了安裝算法,使其扁平化,扁平化就是把深層的依賴往上提。好處是消除重復(fù)依賴,代價(jià)則是引入幽靈依賴問(wèn)題,因?yàn)橥咸岬囊蕾嚹阍陧?xiàng)目中引用時(shí)就能跑
  • 潛在危害:
  1. 不兼容的版本,比如某依賴過(guò)了一年發(fā)布大版本,然后大版本被提升到 node_modules root 目錄,你就會(huì)使用不兼容的版本
  2. 依賴缺失,比如你的直接依賴小版本更新后不使用你之前依賴的間接依賴,再次安裝時(shí)就不會(huì)出現(xiàn)這個(gè)依賴,或者比如多個(gè)直接依賴的間接依賴沖突時(shí),可能也不會(huì)做提升


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)