在本機安裝 JavaScript

了解如何在本機安裝 JavaScript,以便在自己的電腦上解 Exercism 的練習。


本軌道全程仰賴 Node.js,為 JavaScript 提供執行環境。 這表示我們假設你在電腦上執行 JavaScript 時,一律會使用 Node.js。

軌道需求

許多電腦已預先安裝 Node.js,或是先前曾安裝過,或是因為相依性而安裝。 所以在開始做任何事之前,我們應該先確認它是否已經安裝:

  1. 開啟_終端機_(Terminal、cmd、Powershell、bash、……)
  2. node -v

如果已安裝 Node.js,畫面會顯示版本號。 請記下這個版本。 如果_沒有_安裝 Node.js,則會輸出錯誤訊息。 通常是類似 'node' is not recognised 的內容。

Node.js

如果已預先安裝 Node.js

前往 Node.js 網站。 它會顯示_兩種_版本(前提是它能偵測到你的作業系統;否則請先選擇你的作業系統)。 如果你的 node -v 版本與其中一種相符,那就沒問題。 如果不符合,我們建議你使用 Node.js LTS。 如果你擔心升級可能會弄壞系統上的某些東西,你可以當作一切正常繼續下去; 但要是真的發生預期之外的情況,我們可能無法提供支援。

如果沒有安裝 Node.js

安裝 Node.js 有幾種方式:

兩種方式都支援 Windows、macOS 和 Linux。如果你不知道該怎麼做,使用安裝程式最簡單。

  • 我們建議使用LTS版本。Node.js 網站也將它標示為適合「大多數使用者」的_建議_版本。
  • 依照網頁上和/或安裝程式中的指示,安裝 Node.js。

測試安裝

在安裝程式執行完畢、套件管理器完成作業,或是二進位檔已複製且指示都已照做之後,最好測試一下一切是否正常。

  1. 開啟_終端機_(Terminal、cmd、Powershell、bash、……)
  2. node -v

版本應該與網站上的一致。

[!NOTE] 開啟一個_新的_終端機視窗很重要。 安裝完成後,任何已開啟的終端機視窗可能都還沒重新整理。 這表示那些已開啟的終端機不知道剛剛安裝了新程式。

[!IMPORTANT] > 說明:'node' is not recognised

如果你使用的是官方安裝程式,你的 PATH 應該已經自動設定好,但如果你的 shell 找不到全域安裝的模組,或是你是從原始碼自行建置 Node.js,請更新 PATH,把 npm 二進位檔的路徑加進去。

在 macOS 和 Linux 上,你可以把以下內容加到 ~/.bash_profile 或 ~/.zshrc 來完成:

export PATH=/usr/local/share/npm/bin:$PATH

在 Windows 上,開啟開始功能表並搜尋「environment variables」。 你需要編輯 PATH 項目,並在這裡_加入_ npm 二進位檔的路徑。 這些檔案通常位於 C:\Program Files\nodejs。 如果你用 File Explorer 瀏覽到這裡,應該會看到 node.exe、npm.bat 和 npx.bat。

關閉所有已開啟的終端機,然後開一個新的。

啟用 corepack

為了使用與本軌道相容的版本化套件管理器,corepack 需要先啟用一次:

corepack enable pnpm

練習需求

請依照這些指示下載適用於你作業系統的 Exercism CLI。

CLI 設定並配置完成後,下載第一個練習,也就是 hello-world:

exercism download --exercise=hello-world --track=javascript

每個練習接著都需要一些工具才能執行測試。 你可以在每個練習目錄中執行以下指令來安裝它們:

corepack pnpm install

由於本軌道已改用 pnpm,你不必擔心磁碟空間的問題。 看看 pnpm,它確保每個套件版本在磁碟上只會安裝一份。

但 corepack 是什麼,為什麼這樣就能運作?

你不需要這些資訊就能完成 JavaScript 軌道,但如果你很想了解剛才發生了什麼事,以下幾段就是為你準備的:

這之所以能運作,是因為 corepack 是 Node.js 內附的工具,而 Node.js 已依照上述步驟安裝好了。 它可以安裝套件管理器 pnpm。它會設定系統 corepack 指令會尋找 package.json 檔案,這個檔案存在於_每個_練習資料夾中。 接著它會檢查符合 pnpm 的 packageManager,因此可以繼續。必要時,它會先升級 pnpm。 這個檔案也列出了上述的 "dependencies",pnpm 會將它們下載並放到本機快取中。

package.json 裡的指令碼會使用本機快取中的二進位檔,而用來執行測試的正是這些指令碼,如 exercise 說明中所列。