基本原理
前置知識:軟體鏈接與硬鏈接
軟鏈接(符號鏈接Symbolic link):是一類特殊的檔案, 其包含有一條以絕對路徑或者相對路徑的形式指向其它檔案或者目錄的參考,在window快捷方式上和其功能類似,
硬鏈接:是計算機檔案系統中的多個檔案平等地共享同一個檔案存盤單元(如MFT條目、inode),硬鏈接必須在同一個檔案系統中;一般用戶權限下的硬鏈接只能用于檔案,不能用于目錄,因為其父目錄就有歧義了,
熟悉Linux的朋友就很容易就能區分理解這兩個東西了,(mac同)創建的命令分別是:
# 創建硬鏈接
$ ln target_file link_name
# 創建軟鏈接
$ ln -s target_file link_name
$ ln -s target_directory link_name
當然在windows中使用mklink也能夠創建軟鏈接和硬鏈接
# 創建硬鏈接
mklink /H link_name target_file
# 創建軟鏈接
mklink target_file link_name

創建非扁平化的 node_modules 檔案夾

這是官網的一張說明其非扁平化 node_modules的圖,可能不是很明白,我們可以對比著npm會比較明白,分別使用npm和pnpm安裝axios,
PS G:\npm_demo> npm install axios
added 9 packages in 1s
PS G:\pnpm_demo> pnpm add axios
Packages: +9
+++++++++
Packages are hard linked from the content-addressable store to the virtual store.
Content-addressable store is at: G:\.pnpm-store\v3
Virtual store is at: node_modules/.pnpm
Progress: resolved 9, reused 6, downloaded 3, added 9, done
dependencies:
+ axios 1.2.2
Done in 2.8s

npm安裝axios的時候,axios的依賴會放在和axios同一級,這樣做的好處是,如果別的包也同樣使用了這些依賴,就不用重新匯入了,但是缺點是,我們在專案中也能直接去應用axios依賴匯入的包,但我們自身的專案卻是沒有依賴那些包的,要是哪天移除了axios,那專案中可能就會出錯了,也就是幽靈依賴,

切換node版本原理
-
在我們配置了系統環境變數之后,命令列中使用命令時,系統就會到配置的路徑中去尋找是否有支持命令的軟體,然后執行命令,

-
在安裝pnpm的時候,它會在我們的環境變數中添加它自己檔案夾的路徑,比如在我電腦中它的路徑是:
C:\Users\Administrator\AppData\Local\pnpm,它的目錄結構如下:

-
當我們使用pnpm切換node版本的時候,沒有對應的版本它則會下載對應版本的node,然后在將其創建了鏈接(軟鏈接)到pnpm的根目錄中,就相當于當前環境變數中有了對應版本的node了,
快速使用
安裝
安裝了node可以使用npm安裝
npm install -g pnpm
沒有也可以直接在powershell中使用命令進行安裝
iwr https://get.pnpm.io/install.ps1 -useb | iex
安裝程序中,若權限足夠它會在自動在系統中添加環境變數,
常用命令(基本與npm一致)
| npm 命令 | pnpm 等效 |
|---|---|
| npm install | pnpm install |
| npm i |
pnpm add |
| npm run |
pnpm |
洗掉相關依賴
pnpm remove -D # 洗掉開發環境 devDependencies 中的依賴項
pnpm rm -P # 洗掉dependencies 中相關依賴項
pnpm uninstall -g # 全域中洗掉
pnpm prune # 移除沒有在專案中使用的packages
管理node版本
pnpm env use --global lts # 安裝lts版node
pnpm env use --global 18 # 安裝v18版node
pnpm env use --global latest # 安裝最新node
pnpm env remove --global 14.0.0 # 移除指定版本node
pnpm env list # 查看本地有的node版本
pnpm env list --remote # 查看網路源可用的node版本
其它命令
pnpm create react-app my-app
pnpm start # 別名 run start
常用配置
package.json
{
// 指定你的軟體能夠運行的 Node 版本和 pnpm 版本
"engines": {
"node": ">=10",
"pnpm": ">=3"
},
"pnpm": {
// 忽略依賴問題的警告
"peerDependencyRules": {
"ignoreMissing": ["@babel/*", "@eslint/*"]
}
}
}
參考源
https://pnpm.io/zh/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/544133.html
標籤:JavaScript
上一篇:幾行代碼給網站添加暗黑模式
