在本地安装 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 上,打开开始菜单,搜索“环境变量”。 你需要编辑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文件,每个练习文件夹里都有这个文件。 然后它检查packageManager字段,发现与pnpm一致,于是继续执行;必要时,它会先升级pnpm。 这个文件里还列出了上面的"dependencies",这些依赖随后由pnpm下载并放进本地缓存。

package.json里的脚本会使用本地缓存中的二进制文件,而用来运行测试的正是这些脚本,具体见exercise描述。