需求:在做前端開發的時候,有的時候 這個項目需要 node 14 那個項目需要 node 16,我們也不能卸載 安裝 。這豈不是很麻煩。這個時候 就需要 一個工具 來管理我們的 node 版本和 npm 版本。
下面就分享一個 nvm 工具 用來管理 node 版本。
這個nvm 和 java的 mvn 命令很像 。大家不要用混了~ 哈哈
注: 下面的所有 cmd 打開 都要以管理員運行 否則 命令 有可能不生效
nvm 官網地址:https://nvm.uihtm.com
github 地址,
下載最新版本:
https://github.com/coreybutler/nvm-windows
https://github.com/nvm-sh/nvm
nvm 常用命令:
nvm -v 查看當前版本
nvm --config nvm list available 查詢可以下載的node版本
nvm list 查看已安裝node版本列表
nvm install 版本號 下載對應node版本
nvm use 版本號 切換node版本
nvm on 開啟nvm
nvm off 關閉nvm
安裝:
我下載的是 1.1.12 版本
解壓出來
下一步 下一步安裝 不建議安裝到 C盤
安裝完成后 ,修改 鏡像源 加快下載速度
把下面命令復制到 settings.txt 文件中
node_mirror: https://npmmirror.com/mirrors/node/
npm_mirror: https://npmmirror.com/mirrors/npm/
保存即可
nvm配置環境變量
默認 安裝后 會自動配置
低版本的 好像需要自己去配置
%NVM_HOME% 和 %NVM_SYMLINK%
最后 管理員 運行 cmd 驗證安裝情況
文件夾里的情況:
node環境變量配置
對于怎么配置環境變量 常量 和 環境變量里的 PATH 常量 的 這里就不說了
修改全局安裝的模塊路徑和緩存路徑 這樣不占用 C盤
創建兩個文件夾 先
nodeCache
nodeGlobal
創建完兩個文件夾后,在cmd窗口中輸入以下命令
路徑按照自己的存儲地址 修改
npm config set prefix "D:\app\nodejs\nvm\nodeGlobal"
npm config set cache "D:\app\nodejs\nvm\nodeCache"
檢查環境變量:
系統變量 和 用戶變量 都要加 方便后續使用
如果有C:\Users\用戶名\AppData\Roaming\npm,
修改為D:\app\nodejs\nvm\nodeGlobal
我們自己建的 路徑
如果沒有
就新建D:\app\nodejs\nvm\nodeGlobal
這個PATH常量下:
接再來 再創建一個環境變量 NODE_PATH :
變量值如下 就是剛剛我們創建的 全局文件夾 后面加一個 node_modules
D:\app\nodejs\nvm\nodeGlobal\node_modules
設置淘寶的鏡像并查看
建議用 管理員權限 執行 cmd 因為他要寫入 你磁盤 有可能沒權限
npm config set registry https://registry.npmmirror.com/npm config get registry
全局安裝cnpm
npm install -g cnpm --registry=https://registry.npmmirror.com/或npm install -g cnpm
注: 我再在執行 npm install -g cnpm
報錯
說什么權限不足
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator.
百度后 又是 讓給 自己創建的文件夾 權限 又是 清除 c盤下的 .npmrc 文件
但是 對于我來說 都沒用 如果你也遇到這個問題 看了網上 清除了 .npmrc 文件
那你上面執行的 npm config set 命令都會 失效 需要重新執行
最后有一篇文章 解決了問題
因為我使用的 是 node 14.5 所以 在安裝 cnpm 指定一下版本 即可
應該是 依賴 關系的問題 要對應版本下載
npm install -g cnpm@7.1.1
yarn安裝
npm install yarn -g
驗證我們文件夾生效拉 去查看 文件夾里是否有內容