😸

bunをwindowsで使う(WSL bash越しに)

2022/08/29に公開

ジグジグしてきた

関連記事
bunをwindowsで使う(docker越しに): ポッドマンが倒せない(9)
bunのWindows版が開発中?

一時期話題になった高速肉まんのbun
nodeが高速に動くとかなんとか。

それならdenoがあるやんと思われがちだが、
最大に異なる点はnpmが使える点。
それに動揺したのか方針転換までしてる。

https://deno.com/blog/changes

それはそれで注視するとして、
まずはbunでnpm動かして、
もっさりパッケージを高速化したい。

そして、

( ̄ー ̄) windowsでも使いたいなぁ

ということで方法を調べたが。
どこにもなかった。
('ω')

zig推しのmattnがぼやくレベルでなかった
https://twitter.com/mattn_jp/status/1548297834147237888

(゜-゜) wsl越しに使えばいけるか?

windowsからbash経由でlinuxコマンドは叩けるので、
その方向でやってみよう。

ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪

------------------- ↓ 本題はここから ↓-------------------

事前準備

wsl使えるようにしておく。
デフォルトのゲストOS及びユーザーは以下のように確認する。

powershell
wsl -l -v
   NAME                      STATE           VERSION
 * Ubuntu-20.04              Running         2
bash -c id
uid=1000(dozo) gid=1000(dozo) ・・・

上記で確認したOS, userでwslにアクセス。

powershell
wsl
# wsl -d [distro] -u [user] (OSやユーザー指定する時)

以下はubuntu, bashで実行してるものとする。

unzipが必要なので、
先に入れておく

sudo apt install unzip

bunインストール

bunのインストールを行う。
インストールと言ってもバイナリが.bun配下に置かれるだけなので、
パスを通しておしまい。

curl https://bun.sh/install | bash
nano .bashrc

.bashrcに以下を追加

export BUN_INSTALL="$HOME/.bun"
export PATH="$BUN_INSTALL/bin:$PATH"

sourceで変更を反映

source .bashrc
bun --version
 0.1.10

windows用bash越しにアクセス

windowsで作業用の適当なディレクトリを作成
bash越しのpathを確認する

powershell
mkdir work
cd work
wsl -- pwd
 /c/Users/dozo/work

bunのpathが通っているかを確認する
(コマンドがスカスカに見えるがあってます)

powershell
wsl -- bash -ic "bun --version"
 0.1.10

バージョン番号がでてる

(・∀・) やったか!

npmパッケージインストール

試しにnpmパッケージを入れてみる。
パッと思いついたのはviteだったので入れてみよう。
package.jsonは別途必要なので、
それはnpmコマンドで。

npm init -f
wsl -- bash -ic "bun install vite"
bun add v0.1.10
 installed vite@3.0.9 with binaries:
  - vite
 14 packages installed [1.74s]

(;・∀・) 動いてるっぽい

マジか・・・。

------------------- ↓ 後書はここから ↓-------------------

同じことやった人がいるな。

https://stackoverflow.com/questions/72937512/bun-not-found-error-in-windows-with-wsl

解決には至らなかったようだが。

windowsのbash.exeを使う

wslコマンドだとコマンドが長くなりがちなので、
windowsのbash.exe経由でやってみる。

powershell
bash -ic "bun install http-server"
 bun add v0.1.10
 installed http-server@14.1.1 with binaries:
  - http-server
 39 packages installed [3.70s]
  Removed: 1

('ω') いけそうだな

デフォルトOSとデフォルトユーザー固定になるけど、
使い勝手はこっちの方が上か。

WSLの.bashrc通らない問題

今回一番苦労したのはインストールとかではなく、
WindowsからLinuxコマンドへのパスを通す手法だった。

普通にやるなら以下のコマンドが通るはずだったんだが、

NG
wsl -- bun --version
 /bin/bash: bun: command not found

色々試したががbashをインタラクティブモードにしないとうまく動かなかった。

NG
wsl -- bash -ic "bun --version"
 0.1.10

理由?
さっぱりわからん。

Discussion