今回は nodenv を使って Node.js の環境を作ろうと思います。
ちなみに私は Ruby では rvm より rbenv 派。
なので nvm よりは nodenv かな、と。
環境
- OS: macOS Mojave 10.14.6
- zsh: 5.7.1
- Homebrew: 2.1.9
- Homebrew/homebrew-core (git revision 2548c; last commit 2019-08-11)
- nodenv: 1.3.0
- node-build: 4.6.3
インストール
- $ brew install nodenv
- $ nodenv init
- eval "$(nodenv init -)"
- を .zshrc に追加せよ、と言ってきますので追記
- $ nodenv install 12.8.0
- とかで好きなバージョンを指定
- $ nodenv global 12.8.0
- とかで通常使用するバージョンを指定できます。
- $ nodenv local 12.7.0
- とかで特定ディレクトリの下で使用するバージョンを指定します。
- 具体的には .node-version というファイルが作られて、そこにバージョンが書かれる。
nodenv init をちょっと追ってみる
ちなみに zsh 上で
- $ nodenv init -
とすると
のような設定がされることが分かります。つまり、
- executables がある PATH を追加する
- NODENV_SHELL の設定
- 補完スクリプトを source
- nodenv rehash (executables の再配置)
- nodenv の wrapper
- rehash と shell の両コマンドは特別扱い(eval する感じ)みたいですね
- 興味がある人はさらに読んでみても良いかと思います。
nodenv init と shell 指定
rbenv を設定していた時に見つけたのですが、特定の shell であることを指定することもできます。
具体的には $SHELL が zsh の状態でも
- $ nodenv init - bash
とすると
のような、bash 向けの設定が生成されます。
nodenv init - zsh と具体的に違うのは NODENV_SHELL と補完スクリプトの場所くらい。
zsh で bash の設定を読み込むなんてことはほぼ無いと思うので、 nodenv init - で問題無いと思います。
nodenv init - zsh と具体的に違うのは NODENV_SHELL と補完スクリプトの場所くらい。
zsh で bash の設定を読み込むなんてことはほぼ無いと思うので、 nodenv init - で問題無いと思います。
nodenv rehash
ちなみに zshrc に nodenv init - が記述される訳ですから、シェルを立ち上げる度に nodenv init - が実行されます。
気持ち程度の問題だとは思いますが、 rehash を省略するオプションがあって
- $ nodenv init - --no-rehash zsh
とすると nodenv rehash が実行されません。
とはいえ普通はこのオプションのある無しで実行時間はほとんど変わらないです。
大量に package を入れたバージョンから新バージョンに上がった直後とかなら rehash にコストがかかるかも? 程度
とりあえず、私は .zprofile には rehash 無しの init script を書いてます。
とりあえず、私は .zprofile には rehash 無しの init script を書いてます。
それで、npm install -g とかしたら手で nodenv rehash を打つ、という運用をしています。
0 件のコメント:
コメントを投稿