跳到主要內容

前端Leader你應該知道的NPM包管理機制

npm install 命令


首先總結下npm 安裝一個模塊包的常用命令。


/* 模塊依賴會寫入 dependencies 節點 */

npm install moduleName

npm install -save moduleName

npm install -S moduleName

/* 模塊依賴會寫入 devDependencies 節點 */

npm install -save-dev moduleName

npm install -D moduleName

/* 全局安裝模塊包 */

npm install -g moduleName

/* 安裝特定版本的包 */

npm install 包名@版本號

/* 通過地址安裝git倉庫 */

npm install git+https://github.com/itwmike/axios.git

npm install git+ssh://git@github.com:itwmike/axios.git

/* 安裝特定分支或Tag的git倉庫 */

npm install git+https://github.com/itwmike/axios.git#tag

/* 通過用戶名安裝git倉庫 */

npm install github:帳號/倉庫名 # npm install github:itwmike/axios

npm install github:帳號/倉庫名

  


npm 依賴包版本號


npm 所有node包都使用語義化版本號,規則要求如下:  



  • 每個版本號都形如1.2.3,由三個部分組成,依次叫做"主版本號(major)"、"次版本號(minor)"和"修訂號(patch)" 。


  • 當新版本無法兼容基於前一版本的代碼時,則提高主版本號 。


  • 當新版本新增了功能與特性,但仍兼容前一版本的代碼時,則提高次版本號 。


  • 當新版本僅僅修正漏洞或者增強效率,仍然兼容前一版本代碼,則提高修訂號。



默認使用 npm install -save 下載的都是最新版本,同時會在package.json 文件中登記一個最優版本號,如下形式:


"dependencies": {
"axios": "^0.19.0"
},

  


最優版本號前面會多出一個"標記",這個標記有啥意義?它的寫法又有哪些?



 


npm install 都做了哪些事?


拿到一個node項目時首要做法是運行 npm install 命令,這個命令將 package.json 文件中的依賴包自動解析並安裝,這也是項目能夠本地運行的前置條件。那如此簡單的一條命令,npm 背後又做了哪些不為人知的事呢?


Number One


自 npm 5.0后,項目中如果沒有 package-lock.json 文件的時候,npm 會自動幫我們生成。該文件的主要作用是記錄依賴包之間的具體版本號,對包版本有一個鎖定的意義,項目開發中應該將此文件上傳到git等版本控制工具(博主為此經歷了血淋淋的慘痛教育)。


Number Two


檢測本地包是否已經下載。如果本地 node_modules 下已經存在和 package-lock.json 中版本一致的包,則不會重新下載。


Number Three


下載依賴節點中對應的模板包。下載規則是:如果 package-lock.json 文件存在,則按照該文件中記錄的版本號下載對應的模塊包;如果文件不存在或文件中沒有該包的記錄,此時會按照版本號的標記(上面已講)規範下載並同時更新到 package-lock.json。


了解了 package-lock.json 的作用后,筆者有個疑問:手動修改 package.json 中的包版本號后運行 npm install 命令會下載新包么?



帶着這個疑問,筆者做了實驗,得出如下結論:



  • 如果新舊版本號差距較大,比如從 ^2.5.2 變為 2.6.0 ,那麼會下載最新包並且更新 package-lock.json 。


  • 如果新舊版本號差距較小,比如從 ^2.5.2 變為 2.5.4,那麼不會更新。



總之是否更新要看特定情況,取決於 package.json中版本號的標記和 package-lock.json 是否一致。


cnpm install 探索


cnpm 是淘寶 npm 鏡像,在國內很受歡迎,雖然筆者並不喜歡使用。那 cnpm 和 npm 對包的管理是否一樣呢?



  • cnpm install 並不會生成 package-lock.json


  • cnpm install 並不受 package-lock.json 的約束,它會按照版本號標記規則下載依賴包



 


由此可見,我們在項目中使用 cnpm 的時候一定要慎重,因為很可能團隊成員每個人使用的依賴包版本都不相同,造成打包后的結果也不同。


如果團隊要使用 cnpm,請使用固定版本號的方式安裝依賴包如:cnpm install -E moduleName


 


本文轉載自:

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線



※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益



※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象



南投搬家前需注意的眉眉角角,別等搬了再說!



Orignal From: 前端Leader你應該知道的NPM包管理機制

留言

這個網誌中的熱門文章

掃地機器人可以隨身帶上飛機嗎?我想要拿去送給國外的朋友

掃地機器人如果要隨身戴上飛機需要滿足兩個條件: 一個是掃地機器人連同你的隨身行李,整體的體積和重量要符合上機條件,這個具體每家航空公司都不同,可以諮詢,簡單的說就是隨身行李不要超寬超重。 還有一個就是由於掃地機器人內置了鋰電池,所以內置電池的容量要符合相關規定,每個掃地機器人電池容量都不同,具體自行查詢。 根據民航的相關安全要求,凡帶有鋰電池的電子設備均不可以托運,但符合重量要求,尺寸要求以及電量要求的鋰電池及其設備是可以帶上飛機的。 《鋰電池航空運輸規範》中內含鋰離子電池的設備電池額定能量不應超過100Wh的規定,符合國標GB31241-2014,並通過UN38.3航空運輸認證等國際安全標準,所以可以帶上飛機。但是不能托運,只能隨身攜帶。 掃地機器人     掃地機器人     掃地機器人吸塵器 http://www.greenh3y.com/?p=400 Orignal From: 掃地機器人可以隨身帶上飛機嗎?我想要拿去送給國外的朋友

不滿國際規範斷財路 非洲多國擬退野生動保公約

摘錄自2019年09月01日中央通訊社非洲報導 非洲南部多國揚言退出「瀕臨絕種野生動植物國際貿易公約」,因為公約多數成員拒絕放寬象牙與犀牛角交易,並且幾乎全面禁止將野生捕獲的大象送到動物園。 這個公約嚴格規範全球野生動物交易,包括限制象牙與犀牛角交易。 本週在日內瓦召開修訂「瀕臨絕種野生動植物國際貿易公約」(CITES)的會議期間,由於區域集團非南開發共同體(SADC)的多項提案遭否決,這個集團與公約的關係惡化。 全球大象數量最多的區域波札那、納米比亞與辛巴威要求販售取自自然死亡、充公與汰除的大象象牙,這項提議被居多數的101票否決。 40多年前制訂的CITES規範約3萬6000種動植物交易,並設計有助於遏止非法交易和制裁違規國家的機制。 不過有16個成員國的非南開發共同體部分會員批評CITES對非洲國家的問題視若無睹。 坦尚尼亞環境部長西蒙巴徹恩(George Simbachawene)於日內瓦召開的會議中表示:「結果無法採取進步、公平、包容與基於科學的的保育策略。」 他說:「該是認真重新考慮我們加入CITES是否有任何實質益處的時候了。」 本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理 【搬家相關資訊指南】 台中搬家 , 彰化搬家 , 南投搬家 前需注意的眉眉角角,別等搬了再說! 避免吃悶虧無故遭抬價! 台中搬家公司 免費估價,有契約讓您安心有保障! 評比 彰化搬家公司費用 , 南投搬家公司費用 收費行情懶人包大公開 彰化搬家費用 , 南投搬家費用 ,距離,噸數怎麼算?達人教你簡易估價知識! Orignal From: 不滿國際規範斷財路 非洲多國擬退野生動保公約

春河劇團《叫我林彩香》 9/16新竹縣政府文化局登場

春河劇團《叫我林彩香》舞台劇訂於9月16日下午在新竹縣政府文化局演藝廳演出。(圖/新竹縣政府提供) 記者蔡孟尚/新竹報導 春河劇團《叫我林彩香》舞台劇訂於9月16日下午在新竹縣政府文化局演藝廳登場,導演也是劇團團長郎祖筠表示,《叫我林彩香!》是公視劇《我的婆婆怎麼那麼可愛》的前傳,劇情回到婆婆年輕時那個經濟起飛的年代,透過母女之間的相處,刻畫台灣女性在社會轉變過程中的角色與地位,「林彩香」是個代名詞,每個自我意識覺醒的女生,都是可敬、可愛的林彩香。 《叫我林彩香》 演員有高玉珊、呂曼茵、鍾瑶、陳漢典、楊小黎、吳怡霈,劇情以以女性視角剖析傳統台灣家庭、社會,除了可以看到當時代人們對於女性角色的刻板印象外,也可以一窺台灣當時的時代樣貌,例如大家族裡的婆婆是如何咄咄逼人、母親一個女人如何隻身照養一大票小孩,而作為一個女人到底又該如何面對整個社會?年輕時期的彩香嚮往外面世界的自由,從女兒成為了母親,又從母親變成了婆婆,彩香的重心似乎又從外界,慢慢的被拉回家庭中,《叫我林彩香!》劇名的由來,是林彩香對著整個世界的一聲吶喊,不管現在是什麼身分,她最希望的便是可以讓自己被所有給認可。 請問 台中電動車 哪裡在賣比較便宜可以到台中景泰電動車門市去看看總店:臺中市潭子區潭秀里雅潭路一段102-1號。 電動車補助 推薦評價好的 iphone維修 中心擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢住家的頂樓裝 太陽光電 聽說可發揮隔熱功效一線推薦東陽能源擁有核心技術、產品研發、系統規劃設置、專業團隊的太陽能發電廠商。 網頁設計 一頭霧水該從何著手呢? 回頭車 貨運收費標準宇安交通關係企業,自成立迄今,即秉持著「以誠待人」、「以實處事」的企業信念 台中搬家公司 教你幾個打包小技巧,輕鬆整理裝箱!還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」 台中搬家 公司費用怎麼算?擁有20年純熟搬遷經驗,提供免費估價且流程透明更是5星評價的搬家公司好山好水 露營車 漫遊體驗露營車x公路旅行的十一個出遊特色。走到哪、玩到哪,彈性的出遊方案,行程跟出發地也可客製 Google地圖已可更新顯示 潭子電動車 充電站設置地點!!廣告預算用在刀口上, 台北網頁設計 公司幫您達到更多曝光...