在本地安装 WebAssembly

了解如何在本地安装 WebAssembly,在自己的机器上完成 Exercism 的练习


本 track 全程依赖 Node.js,用它为 WebAssembly 提供运行时。也就是说,我们假定你电脑上所有 JavaScript 都通过 Node.js 来运行。

Track 要求

很多电脑都预装了 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 官网上,它也标注为 recommended “for most users”。
  • 按照网页上和/或安装过程中的说明操作,安装 Node.js。

测试安装

安装程序跑完、包管理器执行完毕,或者二进制文件复制好、说明也照着做完之后,最好测试一下一切是否正常。

  1. 打开一个_终端_(Terminal、cmd、Powershell、bash……)
  2. 运行 node -v

这个版本应该与官网上的一致。

注意:一定要打开一个_新_的终端窗口。安装完成之后,已经打开的终端窗口可能没有刷新,也就是说,它们并不知道新装了程序。

帮助:'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。

关闭所有已打开的终端,再打开一个新的。

练习要求

请按照这些说明下载适用于你的操作系统的 Exercism CLI。

CLI 设置并配置好之后,下载第一个练习 hello-world:

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

之后,每个练习都需要一些工具才能运行测试。在每个练习目录中运行下面这个命令即可安装:

npm install

帮助:'<package>' is missing / cannot be found

如果你是在_升级_练习之后看到这条提示的,欢迎来到 npm 7。 删除 node_modules 和 package-lock.json,然后重新运行该命令就能解决。

如果你担心磁盘空间,又不介意再装一个工具,可以看看 pnpm,它能保证每个包版本在磁盘上只安装一份。 这种情况下,用 pnpm install 代替 npm install,一切应该都能照常工作。

那么 npm 是什么,为什么这样就能用?

完成 JavaScript track 并不需要这些信息,但如果你很想弄明白刚才发生了什么,下面几段就是为你写的:

之所以能这样,是因为 npm 是一个随 Node.js 一起提供的包管理器,而 Node.js 已经按上面的步骤装好了。 npm 命令会去找一个 package.json 文件,每个练习文件夹里都有这个文件。 这个文件列出了上面的 "dependencies",npm 会把它们下载下来,放进 node_modules 文件夹。

package.json 里的脚本会用到本地 node_modules 文件夹中的可执行文件,而运行测试用的正是这些脚本,它们列在 exercise 说明里。