MSYS2でNode.jsとAngularCLIを使えるようにする手順についてです!
やっとMSYS2からこの2つが操作できるようになりました!
- MSYS2でNode.jsを使えるようにするには?
- Node.jsのインストール
- Angular CLIのインストール
- リンクを作る
- MSYS2でパスを通す
- MSYS2で試す
- Angular CLIを使う
- 参考
- あとがき
MSYS2でNode.jsを使えるようにするには?
Node.jsをそもそもインストールできないという問題にずっと苛まれていました。
が、コチラのお陰で光がさしました
Docker Toolboxの時点で、Windows側の実行体に触れているので、Windows側にインストールしたものにアクセスすればよいだけでした。
Node.jsのインストール
Windwos側でNode.jsをインストールします。
ぼくは以前インストーラで入れていたので、ひとまずそれを使います。
しかし、nodistやnvmのようなNode.jsのパッケージ管理マネージャを使ったほうが本来は良さげです。
のちのち移行しようと思います。
Node.jsパッケージ管理マネージャでのインストールについては
コチラに書かれているnodist
もしくはコチラに書かれているnvm
このどちらかを見ればできるのではないでしょうか。
Angular CLIのインストール
Node.jsがインストールできたら、一緒に「npm」も入っているはずです。
npmでAngular CLIをインストールします。
コマンドプロンプトを開いて、コレを実行すればOKです。
> npm install -g @angular/cli
なんでコマンドプロンプトでやるかというと、曰くMSYS2上だと「npm -g」系のコマンドがうまくいかない時があるんだとか。
なのでとりあえずの運用として、コマンドプロンプトから実行することとしています。
リンクを作る
npmでインストールしたものは、ユーザフォルダ下にありますが、ちょっと階層が深いです。
ここ
%USERPROFILE%\AppData\Roaming\npm
なのでMSYS2のフォルダに、Windows用のリンクを作り、そこにシンボリックリンクを作成するようにしました。
>mklink /j npm %USERPROFILE%\AppData\Roaming\npm npm <<===>> C:\Users\<user>\AppData\Roaming\npm のジャンクションが作成されました
「別にそのままのフォルダ指定するわ」
という方は、次の「MSYS2でパスを通す」でパスを読み替えればOKです。
MSYS2でパスを通す
MSYS2でNode.jsとnpmパッケージを使用できるよう、パスを通します。
$ PATH=<通すパス>:$PATH
とすればパスは通せるのですが、MSYS2を閉じると、デフォルト状態に戻ってしまいます。
なので
「パスを通すものを一通り起動時に登録してもらおう」
と考えました。
そこで2つのファイルを作りました。
パスを通すシェル「.myPath」
まずはパスを通すためのシェルです。
$ vim ~/.myPath
で以下の内容を記述しました。
#!/bin/bash # add PATH addList=( /c/Program_Files/nodejs/ /windowsLinks/npm ) for i in "${addList[@]}" do PATH=${i}:$PATH done
内容としては
- addListに配列としてパスを入れる
- ループでaddListの内容をPATH通す
ということをしています。
ちなみにnodejsの上階層フォルダで指定している、「Program_Files」はMSYS2でDocker Toolboxを使えるようにしたときに作ったやつです。
.bash_profileに追加する
.bash_profileで先程のシェル「myPath」を読み込む処理を追加します。
$ vim ~/.bash_profile
ファイルの1番下とかに、この3行を追加します。
# Set my PATH if [ -f "${HOME}/.myPath" ]; then source "${HOME}/.myPath" fi
これで起動時に読み込まれる.bash_profileから、.myPathが実行され、PATHを一通り通すことができるようになります。
他にもパスを通したいものが出たら、addListを更新するだけで用意に行うことができます。
玄人の方はこういうのどうやってるんだか気になります……
MSYS2で試す
MSYS2でそのままnodeを実行しても、Node.jsの対話型コンソールに入ることができません(ずっと待機状態になる)。
Node.jsを使うにはwinptyが必要です。
ということでインストール。
$ pacman -S winpty
winptyを使ってnodeを実行する
このようにすればnodeの対話型コンソールを使うことができます。
$ winpty node
なんかエラー出ましたが使えました。
$ winpty node > Error: Could not open history file. REPL session history will not be persisted. > let a = 1 undefined > console.log("a = " + a) a = 1 undefined >
Angular CLIを使う
パスを通したのでAngular CLIも使えます。
$ ng --version You are running version v8.14.1 of Node.js, which is not supported by Angular CLI 8.0+. The official Node.js version that is supported is 10.9 or greater. Please visit https://nodejs.org/en/ to find instructions on how to update Node.js.
ちゃんと動きましたね。
参考
コチラを参考にしました。ありがとうございました!
yumetodo.hateblo.jp qiita.com qiita.com shellscript.sunone.me
あとがき
MSYS2でNode.jsとAngularCLIを使えるようにする手順でした!
これでやっとAngular使えるんじゃないか?!
と期待に胸を膨らましています……!!