国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

pnpm改造替換npm

這篇具有很好參考價值的文章主要介紹了pnpm改造替換npm。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Q: 為什么要遷移pnpm?

相比于npm,pnpm有一些優(yōu)勢:

  1. 更快的安裝速度: 在安裝包時,pnpm使用了硬鏈接的方式,將已安裝的包鏈接到新的目錄下,而不是復(fù)制或下載包。這樣,當你安裝一個包的不同版本或者不同項目使用同一個包時,它們會共享已經(jīng)安裝的包,減少了磁盤空間的占用,同時也加速了安裝的速度。

  2. 更少的磁盤空間占用: 由于pnpm使用硬鏈接的方式共享已安裝的包,因此相比于npm,pnpm占用更少的磁盤空間。

  3. 更好的本地緩存: pnpm會緩存包的元數(shù)據(jù)和二進制文件到本地緩存中,這樣再次安裝相同的包時,會從本地緩存中讀取,而不是重新下載。這樣可以提高安裝包的速度,并減少網(wǎng)絡(luò)帶寬的消耗。

  4. 更好的多項目管理: pnpm可以管理多個項目的依賴,可以將相同的依賴安裝在一個公共的位置,減少磁盤空間的占用,并且可以快速地切換項目之間的依賴關(guān)系。

  5. 更好的可重復(fù)性: pnpm使用了鎖文件來保證安裝包的版本一致性,同時也支持自定義的鎖文件名稱和路徑。這樣可以確保項目在不同的環(huán)境中的安裝結(jié)果一致,增強了可重復(fù)性。

需要注意的是,pnpm相比于npm也存在一些缺點,例如兼容性問題、社區(qū)支持不如npm等。因此,在選擇使用pnpm還是npm時,需要根據(jù)自己的實際需求和項目情況進行權(quán)衡。

Q: 上面提到的硬鏈接和符號鏈接是什么?

硬鏈接和符號鏈接都是文件系統(tǒng)中的鏈接方式,它們的作用是可以將一個文件或目錄鏈接到另一個文件或目錄上,從而實現(xiàn)共享或復(fù)制等功能。下面我來簡單介紹一下它們的區(qū)別和示例。

硬鏈接

硬鏈接是指在文件系統(tǒng)中,將一個文件名鏈接到另一個文件上,使它們指向同一個物理數(shù)據(jù)塊,也就是說,這兩個文件名共享同一個inode節(jié)點。硬鏈接的本質(zhì)是將一個文件名指向一個已存在的文件。

硬鏈接的特點:

  • 硬鏈接不能跨越不同的文件系統(tǒng),因為inode節(jié)點只存在于一個文件系統(tǒng)中。
  • 硬鏈接可以看作是原文件的一個副本,它們的文件權(quán)限、擁有者、修改時間等都是相同的。
  • 刪除硬鏈接并不會刪除原文件,只有當所有的硬鏈接都被刪除后,原文件才會被真正刪除。

下面是一個硬鏈接的示例:

$ touch file1 # 創(chuàng)建一個文件
$ ln file1 file2 # 創(chuàng)建硬鏈接
$ ls -li file* # 查看文件inode節(jié)點
12345 -rw-r--r-- 2 user user 0 Apr 26 10:00 file1
12345 -rw-r--r-- 2 user user 0 Apr 26 10:00 file2

可以看到,file1和file2的inode節(jié)點是相同的,說明它們共享同一個物理數(shù)據(jù)塊。

符號鏈接

也稱之為軟鏈接,符號鏈接是指在文件系統(tǒng)中,創(chuàng)建一個特殊的文件,其中包含了另一個文件的路徑,通過這個特殊文件來鏈接到目標文件。符號鏈接的本質(zhì)是將一個文件名指向一個路徑。

符號鏈接的特點:

  • 符號鏈接可以跨越不同的文件系統(tǒng),因為它們只是一個指向文件或目錄的路徑。
  • 符號鏈接指向的是目標文件或目錄的路徑,而不是inode節(jié)點,因此,目標文件或目錄的屬性信息可以獨立于符號鏈接存在。
  • 刪除符號鏈接不會影響目標文件或目錄,也不會刪除它們。

下面是一個符號鏈接的示例:

$ touch file1 # 創(chuàng)建一個文件
$ ln -s file1 file2 # 創(chuàng)建符號鏈接
$ ls -li file* # 查看文件inode節(jié)點
12345 -rw-r--r-- 1 user user 0 Apr 26 10:00 file1
67890 lrwxr-xr-x 1 user user 5 Apr 26 10:01 file2 -> file1

可以看到,file2是一個符號鏈接文件,它的inode節(jié)點和file1不同,而是一個指向file1的路徑。

Q: 看到一些文章里說pnpm走的是硬鏈接,有的說用了軟連接。到底走的是什么?

其實,pnpm是軟連接和硬鏈接都用了??梢赃@么理解,pnpm在機器上某個地方存放安裝好的所有依賴包,這些依賴包是獨立于我們代碼倉庫的,這也是前面說的pnpm在安裝速度和磁盤空間占用上的優(yōu)點。而我們的代碼庫確實是先通過硬鏈接的方式來建立代碼庫和已安裝過的依賴包之間的共享關(guān)系??梢源蜷_代碼庫看到node_modules下有一個.pnpm文件夾,里面放的就是當前代碼庫建立的硬鏈接。

pnpm改造替換npm,npm,前端

.pnpm下的文件都是一些名字很長的,長這樣:

pnpm改造替換npm,npm,前端

這里不用關(guān)心具體是什么,我們需要關(guān)心的是node_mpdules下我們認識的npm依賴包,它們正是通過軟連接的方式來鏈接到.pnpm下的這些依賴包的。在vscode下,可以明顯看到npm包后面的軟連接標識:

pnpm改造替換npm,npm,前端

如果想看一下這些軟連接到底指向哪里的,可以:

# 進入node_modules目錄
cd node_modules

# 枚舉文件列表
ll

pnpm改造替換npm,npm,前端
可以看到,這就是node_modules下軟鏈接到.pnpm下的。

Q: 這個模式跟npm dedupe是不是很相似,有什么不同?

pnpm的硬鏈接模式和npm的dedupe功能是類似的,都是通過共享已安裝的包來減少磁盤空間的占用,同時也可以提高安裝包的速度。但它們之間還是存在一些不同:

  1. 原理不同: pnpm使用硬鏈接的方式共享已安裝的包,而npm使用的是符號鏈接的方式共享已安裝的包。硬鏈接是文件系統(tǒng)的一種特殊鏈接,它可以將一個文件鏈接到另一個文件上,使它們共享相同的內(nèi)容。符號鏈接則是一個指向另一個文件或目錄的特殊文件。

  2. 適用范圍不同: pnpm的硬鏈接模式可以在多個項目之間共享已安裝的包,而npm的dedupe功能只能在單個項目內(nèi)共享已安裝的包。

  3. 優(yōu)勢不同: pnpm的硬鏈接模式可以減少磁盤空間的占用和提高安裝包的速度,而npm的dedupe功能只能減少磁盤空間的占用。

  4. 實現(xiàn)方式不同: pnpm使用了自己的包管理器和包存儲庫,而npm使用了公共的包管理器和包存儲庫。這也是導(dǎo)致它們之間存在差異的一個重要原因。

需要注意的是,無論是使用pnpm的硬鏈接模式還是npm的dedupe功能,都需要謹慎使用,以避免出現(xiàn)意外的錯誤。特別是在使用硬鏈接模式時,如果多個項目共享同一個包,需要注意不要在一個項目中修改了該包的文件,導(dǎo)致其他項目也受到影響。

Q: pnpm對于node版本有要求嗎?

pnpm有對node版本的要求。官方文檔中列出的最低支持版本是Node.js 10.x,推薦使用的版本是Node.js 14.x。如果使用的是較舊的Node.js版本,可能會導(dǎo)致安裝和使用pnpm時出現(xiàn)錯誤。

我這里本來用的是Node14.x。因為其他原因,本次也給Node升級到16.x了。

Q: pnpm有類似npm ci的命令嗎?

補充:npm ci主要是用于剛剛在download了一個倉庫后,還沒有node_modules的時候讓npm完全根據(jù)package.json和package-lock.json的規(guī)范來install依賴包。相比較于直接走npm inpm ci會帶來更精確的小版本版本號控制,因為npm i對于一些"^1.0.2"這樣的版本號,可能會按照1.x.x這樣的規(guī)范給你無感升級了,造成和之前某些包版本號之間的差異。
但是當本地已有node_modules的時候,就沒辦法用npm ci命令了。

是的,pnpm也有類似 npm ci 命令的功能,可以使用 pnpm install --frozen-lockfile 命令實現(xiàn)。它會根據(jù) package-lock.jsonpnpm-lock.yaml 確定依賴關(guān)系,并且在安裝期間不會更新任何包。此命令類似于 npm ciyarn install --frozen-lockfile 命令。

Q: pnpm@7搭配husky@8后commit一直失敗怎么辦?

這是因為hooks出問題了。某些代碼庫里會在commit時候會添加一些hook用來處理commit相關(guān)的事務(wù),比如生成commit-id之類的。

husky@8后需要處理一下這個:

husky add .husky/commit-msg 'sh .git/hooks/commit-msg "$@"'

手動把之前.git/hooks下的腳本拷貝到.husky下。

友情提示:.git和.husky一般都是在項目根目錄下的隱藏文件夾喲~文章來源地址http://www.zghlxwxcb.cn/news/detail-558288.html

到了這里,關(guān)于pnpm改造替換npm的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 前端 node 常見的包管理工具 npm、npx、Yarn、cnpm、pnpm 的區(qū)別有哪些

    些工具都是用于管理 Node.js 包和依賴項的 npm (Node Package Manager) : npm 是 Node.js 的默認包管理工具,隨同 Node.js 安裝。 主要功能包括安裝、發(fā)布、管理 JavaScript 包和依賴項。 npm 是最常用的包管理工具之一,擁有龐大的包倉庫(npm Registry)。 npx : npx 是 npm 5.2.0 版本引入的一個工

    2024年02月20日
    瀏覽(49)
  • 前端npm, yarn, pnpm下載速度太慢,設(shè)置國內(nèi)鏡像源的幾種方式,讓其速度飛起來

    ?一、說明 在前端開發(fā)的時候使用國外的鏡像源速度很慢并且容易下載失敗,有時候需要嘗試多次才有可能下載成功,很麻煩,因此可以切換為國內(nèi)鏡像源,下面為常用的npm,yarn,pnpm切換國內(nèi)鏡像源(以淘寶為例)的方式。 ?二、NPM切換鏡像源 1. 查看當前的鏡像源。 ``` npm c

    2024年02月10日
    瀏覽(29)
  • 從npm遷移到pnpm:實現(xiàn)npm和pnpm之間的無縫遷移

    隨著npm的廣泛使用,許多開發(fā)人員開始將其作為依賴管理工具。然而,隨著npm的版本更新和社區(qū)的變化,一些開發(fā)人員可能會選擇將npm遷移到另一個包管理器,如pnpm。本文將介紹如何實現(xiàn)npm和pnpm之間的無縫遷移。 了解npm和pnpm的主要區(qū)別 npm是一個輕量級的包管理器,它主要

    2024年02月10日
    瀏覽(25)
  • npm、yarn、pnpm

    一、簡介 CommonJS 的出現(xiàn),使 node 環(huán)境下的 JS 代碼可以用模塊更加細粒度的劃分。一個類、一個函數(shù)、一個對象、一個配置等等均可以作為模塊,這種細粒度的劃分,是開發(fā)大型應(yīng)用的基石。 為了解決在開發(fā)過程中遇到的常見問題,比如加密、提供常見的工具方法、模擬數(shù)據(jù)

    2024年02月10日
    瀏覽(42)
  • Pnpm,npm,yarn

    npm ? 最初的npm只是簡單的通過依賴去遞歸安裝包,所以說每個依賴都會有自己的node_modules,node_modules是嵌套的。一個項目會存在多個包,多個包之間難免會有公共的依賴,node_modules嵌套的話,這樣公共依賴就會下載多次。會造成磁盤空間的浪費,較長的下載時間,文件路徑過

    2024年02月09日
    瀏覽(36)
  • npm、yarn和pnpm

    npm、yarn和pnpm

    在npm@3之前是以嵌套結(jié)構(gòu)方式安裝依賴包,存在兩個問題: 依賴路徑太長 多個包依賴一個相同包時,本地磁盤會存儲多個相同的包 npm@ 3和 yarn 使用扁平化結(jié)構(gòu),node_modules變成所有包放在同一層級 注意 :多個版本的包只有一個會被提升至頂層,其他版本的包會嵌套安裝到各自

    2024年02月11日
    瀏覽(35)
  • npm怎么遷移到pnpm

    npm怎么遷移到pnpm

    下載的vue3模板用到了pnpm,就安裝了一下 但是安裝之后使用pnpm install 就發(fā)現(xiàn)包全被移動到ignored文件夾下面了,還報錯 看報錯原因說使用了兩個不同的包管理器,那應(yīng)該怎么辦呢? 把node_modules刪除 配置pnpm,之前只是安裝了,但沒有配置,所以無法識別pnpm命令 通過npm安裝,安

    2024年04月15日
    瀏覽(19)
  • npm、yarn與pnpm詳解

    npm、yarn與pnpm詳解

    ?? 簡介 : npm 是隨 Node.js 一起安裝的官方包管理工具,它為開發(fā)者搭建了一個龐大的資源庫,允許他們在這個平臺上搜索、安裝和管理項目所必需的各種代碼庫或模塊。 ?? 常用命令 : npm install :安裝package.json中聲明的所有依賴項。 npm install package-name :安裝指定名稱的包

    2024年04月25日
    瀏覽(27)
  • npm項目遷移到,pnpm 過程

    npm遷移到pnpm,好處多多,節(jié)省磁盤。。。 注:新手先備份 1.將npm包從當前項目中卸載 刪除項目中的 node_modules文件 2.安裝pnpm:安裝pnpm,以便您可以在項目中使用它。 3.在項目目錄下創(chuàng)建.npmrc的文件 4.將 package-lock.json 和 yarn.lock 轉(zhuǎn)成 pnpm-lock.yaml 文件,保證依賴版本不變 5.通過

    2024年02月17日
    瀏覽(21)
  • pnpm、npm、yarn的區(qū)別

    pnpm、npm、yarn是三種不同的包管理器,它們之間有一些區(qū)別。 安裝速度:pnpm的安裝速度比npm和yarn快,因為它使用了只下載必需的模塊,而不是下載整個依賴樹。此外,pnpm還可以并行下載模塊,從而進一步提高下載速度。 占用空間:pnpm的占用空間比npm和yarn小,因為它只下載

    2024年02月08日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包