自分のマシンでExercismの演習を解くために、WebAssemblyをローカルにインストールする方法を学びます
このトラックでは、WebAssemblyのランタイムを提供するために、全体を通してNode.jsに依存しています。つまり、お使いのコンピューターでJavaScriptを実行するときは、すべてNode.jsを使うことを前提としています。
多くのマシンにはNode.jsが最初からインストールされているか、以前に、あるいは依存関係としてインストールされている場合があります。そこで、何をするにしても、まずすでにインストールされているかどうかを確認しましょう。
Terminal、cmd、Powershell、bash、…)を開きますnode -vを実行しますNode.jsがインストールされていれば、バージョンが表示されます。このバージョンを書き留めておきましょう。Node.jsがインストールされて_いない_場合は、エラーが出力されます。たいていは、'node' is not recognisedのような内容です。
Node.jsのウェブサイトを開きます。すると、_2つ_のバージョンが表示されます(OSが判別された場合。判別されないときは、先にOSを選択してください)。node -vのバージョンがどちらかと一致していれば、問題ありません。一致しない場合は、Node.js LTSを使うことをおすすめします。アップグレードでシステムの何かが壊れるのが心配なら、すべて問題ないものとしてそのまま進めてもかまいません。ただし、予期しないことが起きたときにサポートを提供できない場合があります。
Node.jsをインストールする方法は、いくつかあります。
どちらの方法もWindows、macOS、Linuxに対応しています。どうすればよいかわからない場合は、インストーラーを使うのがいちばん簡単です。
インストーラーでの作業が終わったあと、パッケージマネージャーでの作業が完了したあと、またはバイナリをコピーして手順どおりに進めたあとは、すべてうまくいったかどうかをテストしておくとよいでしょう。
Terminal、cmd、Powershell、bash、…)を開きますnode -vを実行します表示されるバージョンは、ウェブサイトに載っているものと一致しているはずです。
注意: _新しく_ターミナルウィンドウを開くことが重要です。すでに開いているターミナルウィンドウは、インストールが完了したあとに更新されていない可能性があります。つまり、開いているターミナルは、新しいプログラムがインストールされたことを認識していないのです。
ヘルプ:
'node' is not recognised公式のインストーラーを使った場合、
PATHは自動的に設定されているはずです。ただし、シェルがグローバルにインストールされたモジュールを見つけられない場合や、Node.jsをソースからビルドした場合は、npmのバイナリを含めるようにPATHを更新してください。macOSとLinuxでは、次の行を
~/.bash_profileまたは~/.zshrcのどちらかに追加するとよいでしょう。export PATH=/usr/local/share/npm/bin:$PATHWindowsでは、スタートメニューを開いて"environment variables"を検索します。
PATHの項目を編集し、ここにnpmのバイナリへのパスを_追加_する必要があります。たいていは、C:\Program Files\nodejsにあります。File Explorerでこの場所を開くと、node.exe、npm.bat、npx.batが見つかるはずです。開いているターミナルをすべて閉じて、新しいターミナルを開きます。
お使いのOS用の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は、各パッケージの各バージョンがディスク上に1つしかインストールされないようにします。この場合は、npm installの代わりにpnpm installを実行すれば、すべて期待どおりに動くはずです。
でも、npmとは何で、なぜこれでうまくいくのでしょうか?
JavaScriptトラックを完了するのにこの情報は必要ありませんが、いま何が起きたのかをぜひ理解したいという方は、次の段落が参考になります。
これは、
npmがNode.jsに同梱されているパッケージマネージャーであり、Node.jsは上記の手順でインストールされているからです。npmコマンドはpackage.jsonファイルを探します。このファイルは_各_演習フォルダーにあります。このファイルには上記の"dependencies"がリストされており、npmがそれらをダウンロードしてnode_modulesフォルダーに配置します。
package.json内のスクリプトは、ローカルのnode_modulesフォルダーにあるバイナリを使用します。テストの実行に使われるのはまさにこれらのスクリプトで、exerciseの説明に記載されています。