lisz-works

プログラミングと興味を貴方に

MSYS2でNode.jsとAngularCLIを使えるようにする手順

【スポンサーリンク】

Windows x Linux

MSYS2でNode.jsとAngularCLIを使えるようにする手順についてです!

やっとMSYS2からこの2つが操作できるようになりました!

MSYS2でNode.jsを使えるようにするには?

Node.jsをそもそもインストールできないという問題にずっと苛まれていました。

が、コチラのお陰で光がさしました

Docker Toolboxの時点で、Windows側の実行体に触れているので、Windows側にインストールしたものにアクセスすればよいだけでした。

Node.jsのインストール

Windwos側でNode.jsをインストールします。

ぼくは以前インストーラで入れていたので、ひとまずそれを使います。
しかし、nodistやnvmのようなNode.jsのパッケージ管理マネージャを使ったほうが本来は良さげです。

のちのち移行しようと思います。

Node.jsパッケージ管理マネージャでのインストールについては

コチラに書かれているnodist

yumetodo.hateblo.jp

もしくはコチラに書かれているnvm

qiita.com

このどちらかを見ればできるのではないでしょうか。

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

内容としては

  1. addListに配列としてパスを入れる
  2. ループでaddListの内容をPATH通す

ということをしています。

ちなみにnodejsの上階層フォルダで指定している、「Program_Files」はMSYS2でDocker Toolboxを使えるようにしたときに作ったやつです。

www.lisz-works.com

.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使えるんじゃないか?!

と期待に胸を膨らましています……!!

www.lisz-works.com