欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

從零揭秘npm install的黑科技

 更新時間:2023年05月29日 11:45:52   作者:??????????????????  
通過npm package manager來安裝和管理包是我們最為常見的方式之一,本文將從淺入深地帶大家剖析一下npm install的執(zhí)行過程,感興趣的可以學(xué)習(xí)一下

作為一名前端開發(fā)人員,每天我們都要使用到許多的第三方包。而通過npm package manager來安裝和管理這些包是我們最為常見的方式之一。但是,你是否知道當我們使用npm install安裝一個包時,發(fā)生了哪些事情呢?接下來,本文將從淺入深地剖析npm install的執(zhí)行過程。

淺談npm install

什么是npm

npm,即Node.js Package Manager,是一個用于 Node.js 的包管理器。通過該軟件包管理器,開發(fā)者可以下載別人編寫的代碼包以及發(fā)布自己編寫的代碼包,并在項目中引用和使用這些包。

npm包是什么

npm包實際上就是可以被復(fù)用的Node.js模塊。這些模塊可以是由其他開發(fā)者創(chuàng)建的,也可以是我們自己個人創(chuàng)建并且上傳到npm上的。

npm install是做什么的

通過npm install,我們可以將一個或多個npm包安裝到當前項目中。這樣,在項目中就可以直接使用這些包,而不必擔(dān)心依賴關(guān)系等問題。

npm install的內(nèi)部執(zhí)行過程

話不多說,現(xiàn)在讓我們一起來看看npm install的內(nèi)部執(zhí)行過程吧。

第一步:讀取package.json文件

首先,npm會讀取當前項目中的package.json文件,該文件含有了所有相關(guān)的依賴和開發(fā)者信息。在package.json文件中,可以指定使用哪個版本的某個包。

第二步:創(chuàng)建node_modules文件夾

接下來,在package.json所在的目錄下,npm會自動創(chuàng)建一個名為node_modules的文件夾。

第三步:下載依賴項

當以上兩個步驟完成后,npm就開始執(zhí)行真正的安裝操作了。這時,它會根據(jù)package.json中定義的依賴信息,從npm registry上下載所有依賴項,并將它們放置到node_modules目錄下。

值得注意的是,如果項目中的依賴項已經(jīng)存在于本地緩存中,則npm會直接從本地緩存中拷貝這些依賴對象,而不是重新從registry上下載。這樣做的好處是可以提高安裝速度,同時避免重復(fù)下載相同版本的依賴包。

例如,我們使用以下命令來安裝jQuery:

$ npm install jquery --save-dev

那么,npm就會檢查package.json文件中所列出的依賴項,并將jQuery 3.4.1版本下載并安裝到本地的node_modules/jquery目錄下。

第四步:解決依賴項

通過上述步驟,我們成功下載并安裝了我們使用到的依賴包。不過,我們的項目中還可能存在其他依賴項,這些依賴項也需要被安裝到node_modules目錄下。

具體來說,當npm發(fā)現(xiàn)項目中某個包依賴于另一個包時,它會檢查該依賴包是否已經(jīng)在本地緩存中。如果是,則會將該依賴項拷貝到該包的node_modules目錄下;如果不是,則從npm registry上下載該包,并將其安裝到本地緩存里。

例如,當前項目中使用了lodashunderscore.string兩個包。其中,在package.json中,lodash是直接被定義為項目的一個依賴,而underscore.string是被定義為lodash的一個依賴。那么,在執(zhí)行npm install時,會按以下順序進行依賴項的解決:

  • 首先,npm會安裝lodash包,并將其拷貝到node_modules/lodash中。
  • 接著,當npm看到在package.json文件中定義了underscore.string的依賴項時,它會檢查lodash是否已經(jīng)被安裝。此時,由于lodash已經(jīng)被安裝在了node_modules/lodash目錄下,因此npm會繼續(xù)安裝并將underscore.string打包到node_modules/lodash/node_modules/underscore.string路徑下。

第五步:執(zhí)行preinstall腳本

在所有的依賴項被成功安裝后,npm可能會在默認情況下運行預(yù)安裝鉤子(preinstall hook)腳本,以確保所有依賴關(guān)系都已經(jīng)被正確地安裝。

如果有任何錯誤發(fā)生,npm將會在這個階段拋出異常,并停止執(zhí)行npm install命令。

第六步:執(zhí)行postinstall腳本

當所有依賴關(guān)系已經(jīng)被處理完畢后,npm可根據(jù)需要運行一個或多個后安裝鉤子(postinstall hook)腳本,以執(zhí)行任何定制化的項目初始化、配置或是構(gòu)建任務(wù)等操作。

第七步:生成Lockfile

最后,npm會在項目根目錄下生成一個package-lock.json文件,該文件用于鎖定該項目中所有依賴項的版本號。該文件可以幫助其他開發(fā)者在不同的主機或環(huán)境中重新創(chuàng)建和復(fù)制該項目時,確保使用的依賴項版本與原本一致。

總結(jié)

事實上,npm install過程中涉及的步驟還有很多。但是,在掌握了基本的執(zhí)行流程后,我們至少能對整個npm包安裝過程有一個較為清晰的認識,方便我們針對具體場景進行問題的分析和解決。

npm深層次的工作原理遠遠超出于我們所期望的那么復(fù)雜。不過,通過以上的講解,相信大家都已經(jīng)對npm包管理器有了一個初步的認識了。

最后附上小提示:熟記一些基本的npm命令可以幫助你更加高效地進行代碼開發(fā),提高你的工作效率。

到此這篇關(guān)于從零揭秘npm install的黑科技的文章就介紹到這了,更多相關(guān)npm install內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nodejs實現(xiàn)獲取實時數(shù)據(jù)的三種主流方式詳解

    Nodejs實現(xiàn)獲取實時數(shù)據(jù)的三種主流方式詳解

    這篇文章主要為大家詳細介紹了Nodejs前端獲取實時數(shù)據(jù)的三種主流方式,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • 配置Node.js環(huán)境變量詳細圖文教程

    配置Node.js環(huán)境變量詳細圖文教程

    這篇文章主要給大家介紹了關(guān)于配置Node.js環(huán)境變量詳細圖文教程的相關(guān)資料,在Node.js中設(shè)置環(huán)境變量非常簡單,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • node連接mysql查詢事務(wù)處理的實現(xiàn)

    node連接mysql查詢事務(wù)處理的實現(xiàn)

    本文主要介紹了node連接mysql查詢事務(wù)處理的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 淺談node.js中async異步編程

    淺談node.js中async異步編程

    本文嘗試結(jié)合Marc Fasel的指導(dǎo)思想和筆者的實踐經(jīng)驗來介紹一些NodeJS的異步編程風(fēng)格,希望對NodeJS的初學(xué)者有所啟發(fā)。
    2015-10-10
  • 深入理解Node.js回調(diào)函數(shù)

    深入理解Node.js回調(diào)函數(shù)

    這篇文章主要介紹了Node.js回調(diào)函數(shù),為了解決回調(diào)函數(shù)的缺點,出現(xiàn)了一些替代方案,如Promise、async/await等,這些方案提供了更簡潔、可讀性更高的代碼結(jié)構(gòu),使異步編程更加容易和可維護,需要的朋友可以參考下
    2023-11-11
  • centos 上快速搭建ghost博客方法分享

    centos 上快速搭建ghost博客方法分享

    本文給大家分享的是如何在centos上快速搭建基于Node.js 構(gòu)建的開源博客平臺ghost的方法,非常的實用,有需要的小伙伴可以參考下
    2018-05-05
  • Node.js自定義實現(xiàn)文件路由功能

    Node.js自定義實現(xiàn)文件路由功能

    這篇文章主要介紹了Node.js自定義實現(xiàn)文件路由功能的相關(guān)資料,需要的朋友可以參考下
    2017-09-09
  • NodeJS中的命令行程序、工程目錄、NPM

    NodeJS中的命令行程序、工程目錄、NPM

    使用NodeJS編寫的東西,要么是一個包,要么是一個命令行程序,而前者最終也會用于開發(fā)后者,一般我們會同時提供命令行模式和API模式兩種使用方式,并且我們會借助三方包來編寫代碼,NPM是隨同NodeJS一起安裝的包管理工具,能解決NodeJS代碼部署上的很多問題
    2023-11-11
  • nodejs版本過高導(dǎo)致vue-cli項目無法正常運行的幾種解決方案

    nodejs版本過高導(dǎo)致vue-cli項目無法正常運行的幾種解決方案

    這篇文章主要給大家介紹了關(guān)于nodejs版本過高導(dǎo)致vue-cli項目無法正常運行的幾種解決方案,在項目中你可能需要用到的node版本太低,但是你所下的node版本是最新的,這時候就會報錯,需要的朋友可以參考下
    2023-07-07
  • pnpm管理依賴包如何節(jié)省磁盤空間詳解

    pnpm管理依賴包如何節(jié)省磁盤空間詳解

    這篇文章主要為大家介紹了pnpm管理依賴包如何節(jié)省磁盤空間詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11

最新評論