windowsのローカル環境を整える話(dockerだけではダメだった話)
windowsでもmacでもdockerを使うから、dockerさえ動けば大丈夫やろ。
って思っていた時期が私にもありました。
dockerが動いてもgit周りがあり、git周りを整えてcommitlintとhusky周りを整えたりすると、ローカルでnodeのバージョン管理等する必要が結局必要になります。
またgitの通信周りはローカル環境依存なのでローカルでは
- gitの設定
- nodeのバージョン周りの設定
は永久に付きまとう事が分かりました。
そこでmacとwindows問題が出てきます。
僕は現在windowsでがんばっているのですが、正直開発macの方がいいかなってなってきました。
原因は下記
commitlintとprettierとsoucetreeで困るの巻
gitとcommitlintを使う場合ローカル環境のnodeに依存するので、ローカル環境を整える必要があります。
バージョンの確認が必要な項目
- git
- node
- npm or yarn
となり、とくにnodeのバージョンは重要です。
nvmやn等のバージョン管理ソフトを使ってnodeを柔軟に切り替えられるようにすると幸せになります。
npmとyarn
npmとyarnですが両方ともpackage.jsonを元にnode_moduleを管理するツールになります。
一時yarnが主流でしたが、現在はnpmが主流になりつつあるようです。
両方ともバージョンロックをする。yarn.lock(yarnの場合)やpackage-lock.json(npmの場合)を吐き出すので、現状の動作環境でlockファイルがあると思いますので、対象のパッケージ管理ソフトでinstallしちゃいましょう
今回発生したエラー①
下記のようなエラーが発生しました。
ubuntuの基本フォルダがネットワークドライブになっているので、commitlint等のシェルが起動できないみたいです。
※UNC pathsはネットワークのパスを指しています。
CMD.EXE was started with the above path as the current directory.
UNC paths are not supported. Defaulting to Windows directory.
との事ですのでubuntu上でマウントされているC配下でインストールすれば大丈夫です。
/mnt/c/
今回発生したエラー②
なぜかwindowsのubuntuでnpm installを行うとnode_module配下のbinファイル正しくインストールされない事例が発生しました。
ファイルが生成される物の0キロで生成されました。
→解決案に続く
エラーの文字化けする
windowsで言語設定でUnicode UTF-8を設定しないせいで、そもそものエラー内容が文字化けして正しく表示されない事例がありました。
解決案windows powershellで環境を整える
ubuntuでnpm (yarn) installがうまくいかないのでpower shellならどうよって事でローカル環境の整備はwindow power shellで行う事にしました。
power shellでnpm installを行うと、下記のように.cmdファイルや.ps1ファイルも一緒に出力されてます。
こちらを上記cmdで実行しているようです。
ですのでpower shellでnpm installを行わないと実行されないようです。
今回発生した問題③
下記のエラーが発生
standard_init_linux.go:211: exec user process caused "no such file or directory"
該当のシェルファイルやDockerファイルの改行コードをLFにすればOK
今回発生した問題④
/mnt/c/配下でubuntu上でパーミッションが変更できない問題が発生
/etc/wsl.confファイルを作成し下記を記載し再起動
[automount]
enabled = true
root = /mnt/
options = "metadata,umask=22,fmask=11"
mountFsTab = true
参考
https://qiita.com/cabbage_lettuce/items/acecfaf270b564d8c5aa
その他の問題
docker-compose.ymlファイルで環境変数を見にいく事があるのですが、
docker-compose.ymlファイルでwindowsのubuntuの場合シンボリックリンクで
/mnt/c/~
配下に飛ばす事があります。その参照設定のせいで、macで動くものがwindowsで動かない場合があったりします。
今回の教訓
nodeでインストールした場合、node_module配下にパッケージファイルが入り、
実行ファイルはnode_module/bin/配下に入るので、インストール後の動作がおかしい場合ファイルサイズの確認が必要。
また、ubuntuでインストールがおかしい場合、power shellでのインストールも検討