node.js の環境管理ツール nodebrew
intro
nodebrew は バージョンアップの速い node.js を、複数バージョン管理するためのツールです。
ruby の rvm や、 python の virtualenv、 perl の perlbrew などの node.js 版と思ってもらえれば良いです。
自分はこれまで nvm を使っていたんですが、今年初めあたりから全てのマシンで nodebrew に乗り換えました。
今日はこの nodebrew を紹介します。
既存の node.js の環境管理
既存の、ものとしては
- nvm
- nave
- n
- nodeenv
などがありました。
それぞれにあった問題については、過去に愚痴を書いています。
簡単にまとめると以下です。
- nvm
- bash向けに書かれてて、zshなどと相性が悪い場合がある。
- nave
- node へのパスを通した子shellを起動するタイプで、子shellというのが微妙なときが有る。
- n
- インストール先が /usr/local/n で、そこはいじりたくない。しかも n コマンドでプロセス起動。
- nodeenv
- python の virtualenv をコピーで、ちょっと過剰な感じ。
じゃあどんなのが欲しいかというと、
- /usr とかいじらず、 home 以下あたりに入れてパスを通すだけ
- sudo 無しで完結
- 簡単にバージョンが切り替えられる
- sh ではなく言語で書いてプラットフォーム(bash, zsh etc)に依存しない
- できれば mac に最初から入ってるような言語で書いてある
まあ、「なら自分で作れよ」って話で、実際ちょっと考えてたんですが、
tumblr に記事を上げてからすぐ、 @hokaccha さんがまさしくそのままのものを作って公開されました。
hokaccha △!!
nodebrew書いてみた - hokaccha.hamalog v2
こちらで公開されています。
特徴はこんな感じ
- perl で書かれてる
- Mac やサーバ OS に入ってる率高め
- curl か wget のワンライナーで入れる
- 入れるのに git とかいらない
- パスを指定すれば nodebrew コマンドが使える
- インストールに sudo がいらない、 .bashrc/.zshrc とかに書けばいい
- .nodebrew 以下に node をインストール
- sudo いらないしバージョンの切り替えもパスだけだし、 /usr とかいじらないし、消すのも .nodebrew だけで他を汚さない。
他にも、 ls-remote や clean、 selfupdate など、
欲しい一通りの機能がついています。
なんで無かったんだろう、というくらいコンパクトで使いやすいです。
初心者の方々でも、一番トラブル少なく使えそうかなと思ってます。。
(ただし windows は知りません。)
使い方
最後に簡単な使い方を紹介します。といってもほぼ README のままです。
(必要な perl のバージョンとかはよくわからない。。)
インストール
落として perl に渡すだけ。
ホームに .nodebew ができるだけなので sudo はいりません。
curl
$ curl https://raw.github.com/hokaccha/nodebrew/master/nodebrew | perl - setup
wget
$ wget https://raw.github.com/hokaccha/nodebrew/master/nodebrew $ perl nodebrew setup
パス
.nodebrew 内に node.js がインストールされるので、そこを PATH に足しておきます。
.zshrc や .bashrc などのファイルにこれを足せば良いだけです。
export PATH=$HOME/.nodebrew/current/bin:$PATH
足したら読み直しなど。
$ source ~/.bashrc
node のインストール
あとは非常に直感的
$ nodebrew install latest # 最新 $ nodebrew install v0.6.x # v0.6 $ nodebrew install 0.6.0 # `v` 無しもおk
バージョンの切り替え
$ nodebrew use v0.6.0
これも .bashrc とかに書いておくと良いかも。
例えばこんな感じ。
# source nodebrew if [[ -f ~/.nodebrew/nodebrew ]]; then export PATH=$HOME/.nodebrew/current/bin:$PATH nodebrew use v0.6.0 fi
その他のコマンド
一通り揃ってます。
ls-remote と selfupdate あたり便利。
$ nodebrew help Show this message $ nodebrew install <version> Download and install a <version> $ nodebrew uninstall <version> Uninstall a version $ nodebrew use <version> Modify PATH to use <version> $ nodebrew list List installed versions $ nodebrew ls Alias list $ nodebrew ls-remote List remote versions $ nodebrew ls-all List remote and installed versions $ nodebrew clean <version> | all Remove source file $ nodebrew selfupdate Update nodebrew