WSLも仮想マシン(?)なので、MacでのDockerと同じくファイルの同期が遅いようです。 そこでDeveloping in the Windows Subsystem for Linux with Visual Studio Code を参考にして、ファイルをWSL上で置いて、Windows上のVSCodeから編集出来るようにします。
この手順はとても簡単です。
VSCodeにRemote Development - Visual Studio Marketplaceをいれて、WSLからcode .
を実行すれば、それで終わりです。
WSL上に開発環境をつくるのに、ほかにもいろいろなツールを入れます。 そのメモを残します。
WSL
wsl --install
を実行すれば良いようです。
あっさりいきすぎてあまりよく覚えていません。
sudo apt update && sudo apt upgrade
忘れがちですが、パッケージの更新はしておきましょう。
Windows Terminal
コマンドプロンプトとかPowerShellとか使い分けるのが難しいですし、見た目もちょっと微妙なのでWindows Terminalを入れます。
Windows Terminalはタブで複数のセッションが開けます。
僕はPowerShellはあまり上手く使いこなせていないので、既定のシェルをUbuntuに設定すると便利です。
デフォルトだとUbuntuの新しいセッションをはじめた時に、ディレクトリがWindows側のホームディレクトリになります。 WSL側のホームディレクトリになって欲しいので、 Start Windows Terminal in WSL2 home directory – Dan O'Sullivan's blog を参考にして設定しました。
どういう仕組みでディレクトリが変わるのか、まるでわかっていません。
Node.js
WSL 2 上で Node.jis を設定する | Microsoft Docs
ubuntuの場合は、Node.jsを直接インストールするとnpm i -g
するときにsudo
を求められます。
とくにバージョンにこだわりがない場合でも、nvm
を使うのが無難です。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
Nodeの最新版を入れるとwebpackの実行時にエラーが出ました。 Webpack build failing with ERR_OSSL_EVP_UNSUPPORTED - Stack Overflow を参考にしてLTSを入れました。
ターミナルを開き直して
nvm install --lts
を実行します。
Ruby
RubyはMacでrbenv + ruby-buildを使っています。 Install/Use rbenv (Ruby) on Windows 10 Linux WSL(2) | by Hervé Leclerc | alter way | Mediumを参考にして同じ環境を作ります。
ubuntuの場合はデフォルトでは.bash_profileがありません。 追加すると、bashrcが読まれなくなります。 パスは.bashrcに追加します。
echo 'export PATH=$HOME/.rbenv/bin:$PATH' >> ~/.bashrr
GitHub - rbenv/rbenv: Groom your app’s Ruby environment
これだとrubyが見つからないので、
eval "$(rbenv init - bash)"
も.bashrcに追加します。
Fork
Git用にForkを使っています。
Launch git-fork app from WSL - DEV Communityに従ってalias fork='/mnt/c/Windows/System32/cmd.exe /c "%USERPROFILE%\\AppData\Local\Fork\Fork.exe "$(wslpath -w -a .)'
を設定すれば、WSLの任意のディレクトリからForkが起動できます。
ただ、次のリンクにあるように、ファイルのモードの違いが変更として検出されます。
- git をファイルパーミッションの変更を無視して利用する | Lonely Mobiler
- git status shows all files as modified · Issue #184 · microsoft/WSL · GitHub
差分管理として使うのは、ちょっと怪しいです。 今のところ、コミットはVSCodeのGit機能を使って、Forkは対話リベースにだけ使っています。
open-cli
これは入れたというか、前から使っていたのを試しにつかったら動いて驚きました。
npx open-cli 'http://localhost:8000/dev/development.html'
で、Windows側のブラウザ開くんすよ。びっくりー
GitHub - sindresorhus/open: Open stuff like URLs, files, executables. Cross-platform.
Supports WSL paths to Windows apps.
すごい
あとやりたいと思っていること
感想
思ったより、環境設定で困りませんでした。 プログラマとして、WindowsとWSLだけで生きていくことも出来そうな気がしてきました。