npm package-lock的管理

有同學(xué)提到說package-lock.json文件很容易產(chǎn)生沖突遏餐,我們不妨先放下這個(gè)問題扣蜻,先來看看為什么我們需要package-lock.json.

package-lock.json簡介

package-lock.json is automatically generated for any operations where npm modifies either the node_modules tree, or package.json. It describes the exact tree that was generated, such that subsequent installs are able to generate identical trees, regardless of intermediate dependency updates.

以上摘自官方文檔软棺,義譯一下就是

package-lock.json會在npm更改node_modules目錄樹或者package.json時(shí)自動生成的诫欠。它準(zhǔn)確的描述了當(dāng)前項(xiàng)目npm包的依賴樹艰赞,并且在隨后的安裝中會根據(jù)package-lock.json來安裝意述,保證是相同的一個(gè)依賴樹提佣,不考慮這個(gè)過程中是否有某個(gè)依賴有小版本的更新。

這里有個(gè)很重要的點(diǎn)就是荤崇,package-lock.json記錄的是一個(gè)依賴樹拌屏,而不是你直接在package.json中的依賴項(xiàng)。和直接在package.json中鎖死版本不一樣的地方在于术荤,package.json中只是鎖死了依賴項(xiàng)的版本倚喂,而沒有鎖死依賴項(xiàng)的依賴的版本,這里就是變數(shù)的地方瓣戚。如果不對整個(gè)依賴樹做鎖定端圈,那前后編譯出來的應(yīng)用版本可能是不一樣的,有可能開發(fā)時(shí)能正常工作子库,而到了線上卻不能工作舱权。

所以很明顯的package-lock.json是很符合我們的訴求的。我們需要讓后面每一次install都是相同的版本刚照,打出來的包都有著相同的依賴刑巧,這對于我們項(xiàng)目的穩(wěn)定性、前后一致性是非常重要的无畔。

如何解決package-lock的沖突呢啊楚?

不要試圖刪除package-lock.json來解決一些問題,這樣會破壞package-lock.json的作用浑彰。

package-lock是工具自動生成的一個(gè)文件內(nèi)容恭理,對于這種自動生成的文件最好的辦法還是交由工具去處理,而不是手工一個(gè)一個(gè)的去處理產(chǎn)生的沖突郭变。

在開發(fā)過程中颜价,合并的時(shí)候如何如果出現(xiàn)了沖突,在merge conflicts的階段诉濒,只需要從主分支中checkout去package-lock.json周伦,再以此為基礎(chǔ),重新安裝新分支中需要的依賴未荒。

git checkout dev -- package-lock.json;
npm install lodash --save;

這樣讓npm自動的去維護(hù)package-lock.json专挪。當(dāng)然上面的步驟同樣也適用于rebase過程。

我相信這個(gè)辦法可以很好的解決package-lock.json沖突的問題,并且團(tuán)隊(duì)合作中寨腔,做merge或者rebase操作的人可以通過查看package.json的變更知道新安裝了哪些依賴包速侈,來重新安裝,也可以很好的解決這個(gè)問題迫卢。

校驗(yàn)package-lock.json的正確性

在按照上面的步驟解決完package-lock.json的沖突后倚搬,code reviewer對package-lock.json的正確性需要做一次校驗(yàn),按照gerrit中的說法就是verify的過程乾蛤。將被review的代碼拉到本地做一次npm install每界,檢查package-lock.json是否有modified,如果沒有modify說明提交的package-lock.json是一份正確的文件家卖。

有一個(gè)問題盆犁,package-lock.json中的resolved字段會被不同環(huán)境中的npm registry改寫,這樣會導(dǎo)致很多的沖突篡九。所以在經(jīng)過正確性校驗(yàn)的過程中,可能會因?yàn)楸镜豶egistry的配置問題會導(dǎo)致package-lock.json處于modified狀態(tài)醋奠。所以為了規(guī)避這個(gè)問題榛臼,需要在團(tuán)隊(duì)內(nèi)統(tǒng)一npm registry,可以在項(xiàng)目根目錄中使用.npmrc來配置項(xiàng)目級別的registry來進(jìn)行統(tǒng)一窜司。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末沛善,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子塞祈,更是在濱河造成了極大的恐慌金刁,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件议薪,死亡現(xiàn)場離奇詭異尤蛮,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)斯议,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門产捞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人哼御,你說我怎么就攤上這事坯临。” “怎么了恋昼?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵看靠,是天一觀的道長。 經(jīng)常有香客問我液肌,道長挟炬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮辟宗,結(jié)果婚禮上爵赵,老公的妹妹穿的比我還像新娘。我一直安慰自己泊脐,他們只是感情好空幻,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著容客,像睡著了一般秕铛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缩挑,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天但两,我揣著相機(jī)與錄音,去河邊找鬼供置。 笑死谨湘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的芥丧。 我是一名探鬼主播紧阔,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼续担!你這毒婦竟也來了擅耽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤物遇,失蹤者是張志新(化名)和其女友劉穎乖仇,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體询兴,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡乃沙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了诗舰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片崔涂。...
    茶點(diǎn)故事閱讀 38,577評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖始衅,靈堂內(nèi)的尸體忽然破棺而出冷蚂,到底是詐尸還是另有隱情,我是刑警寧澤汛闸,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布蝙茶,位于F島的核電站,受9級特大地震影響诸老,放射性物質(zhì)發(fā)生泄漏隆夯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蹄衷。 院中可真熱鬧忧额,春花似錦、人聲如沸愧口。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耍属。三九已至托嚣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間厚骗,已是汗流浹背示启。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留领舰,地道東北人夫嗓。 一個(gè)月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像冲秽,于是被迫代替她去往敵國和親啤月。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理劳跃,服務(wù)發(fā)現(xiàn),斷路器浙垫,智...
    卡卡羅2017閱讀 134,628評論 18 139
  • 上一篇文章中提到了幾個(gè)前端界的版本大佬刨仑,這不,上個(gè)月 Node 又發(fā)布了 8.0 版本夹姥。 Node 8 這次升級有...
    6ed7563919d4閱讀 1,481評論 0 0
  • 今天碰到了一些NPM相關(guān)的問題, 花了些時(shí)間搞清楚, 記錄一下. 關(guān)于NPM包依賴的扁平化 (flatten) 接...
    柳正來閱讀 2,686評論 1 1
  • 那段日子杉武,是其他班同學(xué)穿著學(xué)士服、帶著大蓋帽合影后辙售,瘋狂的把他們拋向蔚藍(lán)天空后拖著行李箱走出校門的日子轻抱。 記住,是...
    魔西魔西閱讀 237評論 0 3
  • ** 1.結(jié)構(gòu)與表現(xiàn)相關(guān)內(nèi)容簡介** 網(wǎng)頁制作中 結(jié)構(gòu)(HTML)旦部、表現(xiàn)(CSS)祈搜、行為分離(JavaScript...
    單純的土豆閱讀 958評論 0 0