[{"data":1,"prerenderedAt":777},["ShallowReactive",2],{"blog:\u002Fblog\u002Fnodejs\u002Fnvm":3},{"id":4,"title":5,"author":6,"body":7,"category":759,"date":760,"description":761,"draft":762,"extension":763,"image":764,"meta":765,"navigation":766,"path":767,"seo":768,"series":764,"seriesOrder":764,"seriesTitle":764,"stem":769,"tags":770,"updatedAt":764,"__hash__":776},"blog\u002Fblog\u002Fnodejs\u002Fnvm\u002Findex.md","用 NVM 管理 Node.js 版本","charles",{"type":8,"value":9,"toc":753},"minimark",[10,14,17,22,36,42,76,83,89,210,216,229,234,240,256,261,264,270,290,295,299,304,320,325,334,339,353,361,370,381,387,391,405,411,416,430,435,441,457,462,466,471,485,490,503,507,520,523,591,596,599,604,616,621,631,636,640,650,655,660,674,676,681,697,702,705,749],[11,12,13],"p",{},"Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境，可以讓 JavaScript 在伺服器端運行，並且可以使用 NPM 等 Package Manager 來安裝第三方套件。現代的網頁前端開發也離不開使用 node.js 的 package，例如透過 Vite 建立本地開發伺服器與打包專案。",[11,15,16],{},"Node.js 的版本更新速度很快，因此我們需要一個工具來管理 Node.js 的版本，避免不同專案需要使用不同版本的 Node.js 時造成問題。",[18,19,21],"h2",{"id":20},"以-ubuntu-安裝-nvm","以 Ubuntu 安裝 NVM",[23,24,25],"ul",{},[26,27,28,29],"li",{},"參考官方文件：",[30,31,35],"a",{"href":32,"rel":33},"https:\u002F\u002Fgithub.com\u002Fnvm-sh\u002Fnvm?tab=readme-ov-file#installing-and-updating",[34],"nofollow","🔗 nvm - GitHub",[37,38,39],"ol",{},[26,40,41],{},"下載 install script",[43,44,49],"pre",{"className":45,"code":46,"language":47,"meta":48,"style":48},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","curl -o- https:\u002F\u002Fraw.githubusercontent.com\u002Fnvm-sh\u002Fnvm\u002Fv0.40.1\u002Finstall.sh | bash\n","bash","",[50,51,52],"code",{"__ignoreMap":48},[53,54,57,61,65,69,73],"span",{"class":55,"line":56},"line",1,[53,58,60],{"class":59},"sbgvK","curl",[53,62,64],{"class":63},"stzsN"," -o-",[53,66,68],{"class":67},"s_sjI"," https:\u002F\u002Fraw.githubusercontent.com\u002Fnvm-sh\u002Fnvm\u002Fv0.40.1\u002Finstall.sh",[53,70,72],{"class":71},"smGrS"," |",[53,74,75],{"class":59}," bash\n",[11,77,78],{},[79,80],"img",{"alt":81,"src":82},"alt text","\u002Fimages\u002Fblog\u002Fnodejs\u002Fnvm\u002Fimage-7.png",[37,84,86],{"start":85},2,[26,87,88],{},"設定環境變數",[43,90,92],{"className":45,"code":91,"language":47,"meta":48,"style":48},"export NVM_DIR=\"$([ -z \"${XDG_CONFIG_HOME-}\" ] && printf %s \"${HOME}\u002F.nvm\" || printf %s \"${XDG_CONFIG_HOME}\u002Fnvm\")\"\n[ -s \"$NVM_DIR\u002Fnvm.sh\" ] && \\. \"$NVM_DIR\u002Fnvm.sh\" # This loads nvm\n",[50,93,94,171],{"__ignoreMap":48},[53,95,96,100,104,107,111,114,117,120,123,126,129,133,136,139,142,145,148,151,154,156,158,160,163,165,168],{"class":55,"line":56},[53,97,99],{"class":98},"sbsja","export",[53,101,103],{"class":102},"su5hD"," NVM_DIR",[53,105,106],{"class":71},"=",[53,108,110],{"class":109},"sjJ54","\"$([",[53,112,113],{"class":71}," -z",[53,115,116],{"class":109}," \"${",[53,118,119],{"class":102},"XDG_CONFIG_HOME-",[53,121,122],{"class":109},"}\"",[53,124,125],{"class":109}," ]",[53,127,128],{"class":109}," &&",[53,130,132],{"class":131},"sptTA"," printf",[53,134,135],{"class":67}," %s ",[53,137,138],{"class":109},"\"${",[53,140,141],{"class":102},"HOME",[53,143,144],{"class":109},"}",[53,146,147],{"class":67},"\u002F.nvm",[53,149,150],{"class":109},"\"",[53,152,153],{"class":71}," ||",[53,155,132],{"class":131},[53,157,135],{"class":67},[53,159,138],{"class":109},[53,161,162],{"class":102},"XDG_CONFIG_HOME",[53,164,144],{"class":109},[53,166,167],{"class":67},"\u002Fnvm",[53,169,170],{"class":109},"\")\"\n",[53,172,173,177,180,183,186,189,191,193,195,198,200,202,204,206],{"class":55,"line":85},[53,174,176],{"class":175},"sP7_E","[",[53,178,179],{"class":71}," -s",[53,181,182],{"class":109}," \"",[53,184,185],{"class":102},"$NVM_DIR",[53,187,188],{"class":67},"\u002Fnvm.sh",[53,190,150],{"class":109},[53,192,125],{"class":175},[53,194,128],{"class":175},[53,196,197],{"class":59}," \\.",[53,199,182],{"class":109},[53,201,185],{"class":102},[53,203,188],{"class":67},[53,205,150],{"class":109},[53,207,209],{"class":208},"sutJx"," # This loads nvm\n",[37,211,213],{"start":212},3,[26,214,215],{},"查看最新的 Node.js LTS 版本",[43,217,219],{"className":45,"code":218,"language":47,"meta":48,"style":48},"nvm ls-remote\n",[50,220,221],{"__ignoreMap":48},[53,222,223,226],{"class":55,"line":56},[53,224,225],{"class":59},"nvm",[53,227,228],{"class":67}," ls-remote\n",[11,230,231],{},[79,232],{"alt":81,"src":233},"\u002Fimages\u002Fblog\u002Fnodejs\u002Fnvm\u002Fimage-8.png",[37,235,237],{"start":236},4,[26,238,239],{},"安裝最新的 Node.js LTS 版本",[43,241,243],{"className":45,"code":242,"language":47,"meta":48,"style":48},"nvm install 22.11.0\n",[50,244,245],{"__ignoreMap":48},[53,246,247,249,252],{"class":55,"line":56},[53,248,225],{"class":59},[53,250,251],{"class":67}," install",[53,253,255],{"class":254},"srdBf"," 22.11.0\n",[11,257,258],{},[79,259],{"alt":81,"src":260},"\u002Fimages\u002Fblog\u002Fnodejs\u002Fnvm\u002Fimage-9.png",[11,262,263],{},"系統會自動將這個版本設定為預設",[37,265,267],{"start":266},5,[26,268,269],{},"確認 node, npm 的版本",[43,271,273],{"className":45,"code":272,"language":47,"meta":48,"style":48},"node -v\nnpm -v\n",[50,274,275,283],{"__ignoreMap":48},[53,276,277,280],{"class":55,"line":56},[53,278,279],{"class":59},"node",[53,281,282],{"class":63}," -v\n",[53,284,285,288],{"class":55,"line":85},[53,286,287],{"class":59},"npm",[53,289,282],{"class":63},[11,291,292],{},[79,293],{"alt":81,"src":294},"\u002Fimages\u002Fblog\u002Fnodejs\u002Fnvm\u002Fimage-10.png",[18,296,298],{"id":297},"以-windows-安裝-nvm","以 Windows 安裝 NVM",[37,300,301],{},[26,302,303],{},"開啟 PowerShell 並執行以下指令",[43,305,307],{"className":45,"code":306,"language":47,"meta":48,"style":48},"winget search nvm\n",[50,308,309],{"__ignoreMap":48},[53,310,311,314,317],{"class":55,"line":56},[53,312,313],{"class":59},"winget",[53,315,316],{"class":67}," search",[53,318,319],{"class":67}," nvm\n",[11,321,322],{},[79,323],{"alt":81,"src":324},"\u002Fimages\u002Fblog\u002Fnodejs\u002Fnvm\u002Fimage.png",[326,327,328],"blockquote",{},[11,329,330,331],{},"我們要的是 ",[50,332,333],{},"CoreyButler.NVMforWindows",[37,335,336],{"start":85},[26,337,338],{},"下載並安裝 NVM",[43,340,342],{"className":45,"code":341,"language":47,"meta":48,"style":48},"winget install CoreyButler.NVMforWindows\n",[50,343,344],{"__ignoreMap":48},[53,345,346,348,350],{"class":55,"line":56},[53,347,313],{"class":59},[53,349,251],{"class":67},[53,351,352],{"class":67}," CoreyButler.NVMforWindows\n",[11,354,355,358],{},[79,356],{"alt":81,"src":357},"\u002Fimages\u002Fblog\u002Fnodejs\u002Fnvm\u002Fimage-1.png",[79,359],{"alt":81,"src":360},"\u002Fimages\u002Fblog\u002Fnodejs\u002Fnvm\u002Fimage-2.png",[37,362,363],{"start":212},[26,364,365,366,369],{},"看到 ",[50,367,368],{},"Successfully installed"," 後，重新開啟終端機並執行以下指令",[43,371,373],{"className":45,"code":372,"language":47,"meta":48,"style":48},"nvm -v\n",[50,374,375],{"__ignoreMap":48},[53,376,377,379],{"class":55,"line":56},[53,378,225],{"class":59},[53,380,282],{"class":63},[11,382,383,386],{},[79,384],{"alt":81,"src":385},"\u002Fimages\u002Fblog\u002Fnodejs\u002Fnvm\u002Fimage-3.png","\n有出現版本號表示安裝成功",[37,388,389],{"start":236},[26,390,239],{},[43,392,394],{"className":45,"code":393,"language":47,"meta":48,"style":48},"nvm install lts\n",[50,395,396],{"__ignoreMap":48},[53,397,398,400,402],{"class":55,"line":56},[53,399,225],{"class":59},[53,401,251],{"class":67},[53,403,404],{"class":67}," lts\n",[11,406,407,410],{},[79,408],{"alt":81,"src":409},"\u002Fimages\u002Fblog\u002Fnodejs\u002Fnvm\u002Fimage-4.png","\n這邊顯示我們安裝的版本是 22.11.0，我們指定它為預設版本",[37,412,413],{"start":266},[26,414,415],{},"啟用指定的版本",[43,417,419],{"className":45,"code":418,"language":47,"meta":48,"style":48},"nvm use 22.11.0\n",[50,420,421],{"__ignoreMap":48},[53,422,423,425,428],{"class":55,"line":56},[53,424,225],{"class":59},[53,426,427],{"class":67}," use",[53,429,255],{"class":254},[11,431,432],{},[79,433],{"alt":81,"src":434},"\u002Fimages\u002Fblog\u002Fnodejs\u002Fnvm\u002Fimage-5.png",[37,436,438],{"start":437},6,[26,439,440],{},"完成後，可以檢查 node 跟 npm 的版本",[43,442,443],{"className":45,"code":272,"language":47,"meta":48,"style":48},[50,444,445,451],{"__ignoreMap":48},[53,446,447,449],{"class":55,"line":56},[53,448,279],{"class":59},[53,450,282],{"class":63},[53,452,453,455],{"class":55,"line":85},[53,454,287],{"class":59},[53,456,282],{"class":63},[11,458,459],{},[79,460],{"alt":81,"src":461},"\u002Fimages\u002Fblog\u002Fnodejs\u002Fnvm\u002Fimage-6.png",[18,463,465],{"id":464},"以-macos-安裝-nvm","以 MacOS 安裝 NVM",[37,467,468],{},[26,469,470],{},"開啟終端機並執行以下指令",[43,472,474],{"className":45,"code":473,"language":47,"meta":48,"style":48},"brew install nvm\n",[50,475,476],{"__ignoreMap":48},[53,477,478,481,483],{"class":55,"line":56},[53,479,480],{"class":59},"brew",[53,482,251],{"class":67},[53,484,319],{"class":67},[37,486,487],{"start":85},[26,488,489],{},"建立 nvm 的目錄",[43,491,493],{"className":45,"code":492,"language":47,"meta":48,"style":48},"mkdir ~\u002F.nvm\n",[50,494,495],{"__ignoreMap":48},[53,496,497,500],{"class":55,"line":56},[53,498,499],{"class":59},"mkdir",[53,501,502],{"class":67}," ~\u002F.nvm\n",[37,504,505],{"start":212},[26,506,88],{},[43,508,510],{"className":45,"code":509,"language":47,"meta":48,"style":48},"nano ~\u002F.zshrc\n",[50,511,512],{"__ignoreMap":48},[53,513,514,517],{"class":55,"line":56},[53,515,516],{"class":59},"nano",[53,518,519],{"class":67}," ~\u002F.zshrc\n",[11,521,522],{},"在檔案最後加入以下內容",[43,524,526],{"className":45,"code":525,"language":47,"meta":48,"style":48},"export NVM_DIR=\"$HOME\u002F.nvm\"\nexport NVM_HOME=\"\u002Fopt\u002Fhomebrew\u002Fopt\u002Fnvm\"\n[ -s \"$NVM_HOME\u002Fnvm.sh\" ] && \\. \"$NVM_HOME\u002Fnvm.sh\"\n",[50,527,528,546,562],{"__ignoreMap":48},[53,529,530,532,534,536,538,541,543],{"class":55,"line":56},[53,531,99],{"class":98},[53,533,103],{"class":102},[53,535,106],{"class":71},[53,537,150],{"class":109},[53,539,540],{"class":102},"$HOME",[53,542,147],{"class":67},[53,544,545],{"class":109},"\"\n",[53,547,548,550,553,555,557,560],{"class":55,"line":85},[53,549,99],{"class":98},[53,551,552],{"class":102}," NVM_HOME",[53,554,106],{"class":71},[53,556,150],{"class":109},[53,558,559],{"class":67},"\u002Fopt\u002Fhomebrew\u002Fopt\u002Fnvm",[53,561,545],{"class":109},[53,563,564,566,568,570,573,575,577,579,581,583,585,587,589],{"class":55,"line":212},[53,565,176],{"class":175},[53,567,179],{"class":71},[53,569,182],{"class":109},[53,571,572],{"class":102},"$NVM_HOME",[53,574,188],{"class":67},[53,576,150],{"class":109},[53,578,125],{"class":175},[53,580,128],{"class":175},[53,582,197],{"class":59},[53,584,182],{"class":109},[53,586,572],{"class":102},[53,588,188],{"class":67},[53,590,545],{"class":109},[11,592,593],{},[79,594],{"alt":81,"src":595},"\u002Fimages\u002Fblog\u002Fnodejs\u002Fnvm\u002Fimage-11.png",[11,597,598],{},"按下 Ctrl + O 儲存後按下 Enter，再按下 Ctrl + X 退出",[37,600,601],{"start":236},[26,602,603],{},"重新載入設定",[43,605,607],{"className":45,"code":606,"language":47,"meta":48,"style":48},"source ~\u002F.zshrc\n",[50,608,609],{"__ignoreMap":48},[53,610,611,614],{"class":55,"line":56},[53,612,613],{"class":131},"source",[53,615,519],{"class":67},[37,617,618],{"start":266},[26,619,620],{},"確認 nvm 是否安裝成功",[43,622,623],{"className":45,"code":372,"language":47,"meta":48,"style":48},[50,624,625],{"__ignoreMap":48},[53,626,627,629],{"class":55,"line":56},[53,628,225],{"class":59},[53,630,282],{"class":63},[11,632,633,386],{},[79,634],{"alt":81,"src":635},"\u002Fimages\u002Fblog\u002Fnodejs\u002Fnvm\u002Fimage-12.png",[37,637,638],{"start":437},[26,639,215],{},[43,641,642],{"className":45,"code":218,"language":47,"meta":48,"style":48},[50,643,644],{"__ignoreMap":48},[53,645,646,648],{"class":55,"line":56},[53,647,225],{"class":59},[53,649,228],{"class":67},[11,651,652],{},[79,653],{"alt":81,"src":654},"\u002Fimages\u002Fblog\u002Fnodejs\u002Fnvm\u002Fimage-13.png",[37,656,658],{"start":657},7,[26,659,239],{},[43,661,663],{"className":45,"code":662,"language":47,"meta":48,"style":48},"nvm install 22.12.0\n",[50,664,665],{"__ignoreMap":48},[53,666,667,669,671],{"class":55,"line":56},[53,668,225],{"class":59},[53,670,251],{"class":67},[53,672,673],{"class":254}," 22.12.0\n",[11,675,263],{},[37,677,679],{"start":678},8,[26,680,269],{},[43,682,683],{"className":45,"code":272,"language":47,"meta":48,"style":48},[50,684,685,691],{"__ignoreMap":48},[53,686,687,689],{"class":55,"line":56},[53,688,279],{"class":59},[53,690,282],{"class":63},[53,692,693,695],{"class":55,"line":85},[53,694,287],{"class":59},[53,696,282],{"class":63},[11,698,699],{},[79,700],{"alt":81,"src":701},"\u002Fimages\u002Fblog\u002Fnodejs\u002Fnvm\u002Fimage-14.png",[18,703,704],{"id":704},"常用指令列表",[23,706,707,713,719,725,731,737,743],{},[26,708,709,712],{},[50,710,711],{},"nvm ls","：列出所有已安裝的 Node.js 版本",[26,714,715,718],{},[50,716,717],{},"nvm ls-remote","：列出所有可安裝的 Node.js 版本",[26,720,721,724],{},[50,722,723],{},"nvm install \u003Cversion>","：安裝指定的 Node.js 版本",[26,726,727,730],{},[50,728,729],{},"nvm use \u003Cversion>","：啟用指定的 Node.js 版本",[26,732,733,736],{},[50,734,735],{},"nvm alias default \u003Cversion>","：設定預設的 Node.js 版本",[26,738,739,742],{},[50,740,741],{},"nvm uninstall \u003Cversion>","：移除指定的 Node.js 版本",[26,744,745,748],{},[50,746,747],{},"node -v","：查看目前使用的 Node.js 版本",[750,751,752],"style",{},"html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sptTA, html code.shiki .sptTA{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":48,"searchDepth":212,"depth":212,"links":754},[755,756,757,758],{"id":20,"depth":85,"text":21},{"id":297,"depth":85,"text":298},{"id":464,"depth":85,"text":465},{"id":704,"depth":85,"text":704},"Node.js","2024-10-05","認識 Node.js，在 Linux \u002F Windows \u002F Mac 任何作業系統安裝 NVM 來管理 Node.js 版本。",false,"md",null,{},true,"\u002Fblog\u002Fnodejs\u002Fnvm",{"title":5,"description":761},"blog\u002Fnodejs\u002Fnvm\u002Findex",[759,771,772,773,774,775],"Frontend","Linux","Ubuntu","Windows","MacOS","NTBoCOkP7BJQ-NxGwcm6qQwLQYdOoOt8KaVLIVt_SKM",1780512500880]