詳解npm與package.json之間的聯(lián)系
正文
在nodejs編寫的腳手架項目中,npm是不可缺少的包管理工具,當使用npm初始化時,會生成package.json文件來對項目進行整體的管理和描述
以下是新建的練習(xí)項目中package.json文件,初始化項目之后,安裝了axios

配置信息
以上每個配置信息分別對應(yīng)的含義如下
(1)name * 項目名稱
(2)version * 當前版本號
(3)description 是描述信息
(4)main: 'index.js' 表示項目入口
(5)script 用于配置腳本信息 start/stop/test/restart 時, npm run start中的run可以省略
(6)author 作者 (發(fā)布時用到)
(7)license 開源協(xié)議 (發(fā)布時用到)
(8)dependencies 依賴 開發(fā)環(huán)境生產(chǎn)環(huán)境都需要
(9)devDependencies 開發(fā)時依賴的庫, 生產(chǎn)環(huán)境不需要使用
package-lock.json文件
以上項目通過 npm install axios 為項目添加了axios,所以在dependencies下添加了aixos,安裝的時候除了在node_modules會增加對應(yīng)的依賴外,在package-lock.json會指明axios具體的版本以及axios內(nèi)部的依賴,可以看到package-lock.json文件中,axios版本為0.21.1

但,有一點很奇怪,明明我只安裝了 axios,為什么 package-lock.json 的dependencies 中還有一個 "follow-redirects",我們找到 node_modules 中安裝的包文件,發(fā)現(xiàn)確實有axios和follow-redirects,打開axios的package.json文件,可以看到在axios的生產(chǎn)依賴 dependencies 中添加了 "follow-redirects",所以在安裝 axios 的時候,自動幫我們安裝了它所依賴的包,而 devDependencies 中依賴的包都沒有安裝,這也驗證了一點,devDependencies只會被用于開發(fā)中,生產(chǎn)當中是不會安裝的

執(zhí)行 npm install
當我們拿到一個新項目的時候,通常是沒有node_modules文件夾的,我們需要自行通過 npm install 來安裝所有的依賴,當執(zhí)行 npm install 的時候具體進行了哪些操作呢?

如圖所示,當項目中存在package.json文件執(zhí)行 npm install 的時候,首先會判斷是否存在 package-lock.json 文件,沒有 lock 文件的話,會根據(jù) package.json 文件建立依賴關(guān)系,然后去存儲 npm 各種工具的 registry 庫中查找依賴并獲取壓縮包,此時會將壓縮包緩存下來,然后將壓縮包添加到 node_modules中,添加到 node_modules 后會生成 package-lock.json 中記錄下載的版本和依賴關(guān)系。
如果存在 package-lock.json 文件,直接判斷packge.json 所需依賴中與lock文件中依賴是否一致,不一致再重新建立依賴關(guān)系,一致的時候去緩存中查找緩存文件,沒找到緩存文件就自行去 registry 庫中下載壓縮包。
以上就是詳解npm與package.json之間的聯(lián)系的詳細內(nèi)容,更多關(guān)于npm與package.json的聯(lián)系的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
如何解決安裝websocket還是報錯Cannot find module'ws&apos
這篇文章主要介紹了如何解決安裝websocket還是報Cannot find module'ws'問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
基于socket.io+express實現(xiàn)多房間聊天
本文給大家分享的是使用node.js,基于socket.io+express實現(xiàn)多房間聊天的代碼,非常的實用,有需要的小伙伴可以來參考下2016-03-03
nodejs實現(xiàn)百度輿情接口應(yīng)用示例
這篇文章主要介紹了nodejs實現(xiàn)百度輿情接口應(yīng)用,結(jié)合實例形式分析了node.js調(diào)用百度輿情接口的具體使用技巧,需要的朋友可以參考下2020-02-02
Node.js正則表達式優(yōu)化與ReDOS攻擊防范實戰(zhàn)案例
這篇文章主要介紹了Node.js正則表達式優(yōu)化與ReDOS攻擊防范實戰(zhàn)案例的相關(guān)資料,文中提供了防護策略和優(yōu)化實踐,包括避免嵌套量詞、使用確定性模式、限制回溯深度等原則,以及使用超時控制、替換安全庫等方案,需要的朋友可以參考下2026-05-05
Node.js實現(xiàn)讀取Excel數(shù)據(jù)并插入MySQL
這篇文章主要為大家詳細介紹了Node.js如何實現(xiàn)讀取Excel數(shù)據(jù)并插入到MySQL數(shù)據(jù)庫中,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11
詳解node child_process模塊學(xué)習(xí)筆記
這篇文章主要介紹了詳解node child_process模塊學(xué)習(xí)筆記,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01
在Node.js下運用MQTT協(xié)議實現(xiàn)即時通訊及離線推送的方法
這篇文章主要介紹了在Node.js下運用MQTT協(xié)議實現(xiàn)即時通訊及離線推送的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01

