この記事を書いたきっかけ:
Node.jsをnodebrewで管理していたのをやめ、anyenv経由で入れたnodenvでインストールし直したが、npmでグローバルインストールしたモジュールにアクセスできなくて困ったから
参考: nodebrew管理からnodenv管理への移行ははこちらを参考に行いました
注意:上記記事ではanyenvではなく、git
経由でnodenvがクローンされています。anyenv経由でnodenvをインストールする方法も調べると出てきます。
前提
- Node.jsをanyenvのnodenvで管理している
- nodenvのバージョン:
1.1.2-1-g18489d7
- Node.jsのバージョン:
9.11.1
- npmのバージョン:
5.6.0
- nodenvのバージョン:
実際の手順
作業の順番に沿って説明します。
npmがnodenvで管理されたNode.jsのものであることを確認する
nodenvでのNode.jsのインストールは完了していると考えます。
Node.jsをインストールした際に自動的にnpmもインストールされています。
npmがnodenvで管理されたNode.jsのものであることを確認します↓
$ which npm
/Users/{your_user_name}/.anyenv/envs/nodenv/shims/npm
/usr/local/bin
などが表示された場合、nodebrewなどを利用してインストールされていると思われます。
npmのパスが通らない場合
.bash_profile
に以下の記述を追加します。
zshを使用している場合は書き込み先を .zshrc
にするなど、適宜読み替えてください。
- 方法1: ファイルに直接追記する
export PATH="$HOME/.anyenv/envs/nodenv/bin:$PATH"
- 方法2: echoする
$ echo 'export PATH="$HOME/.nodenv/bin:$PATH"' >> ~/.bash_profile
- 更新する(方法1,2共通)
$ source ~/.bash_profile
では、このnodenv配下のnpmでモジュールをグローバルインストールします。
どのNode.jsのnpmか確認する
npmでグローバルインストールする対象のNode.jsが何か、念のため確認します。
nodenvで複数の環境を管理している場合は特に注意です。
- nodenvでNode.jsのバージョン管理をしているか確認する
# インストール済みのNode.jsバージョン一覧
$ nodenv versions
8.11.1
* 9.11.1 (set by /Users/{your_user_name}/.anyenv/envs/nodenv/version)
ローカル環境のNode.jsを参照している場合、参照先のファイルが $ nodenv local {バージョン番号}
実行時に作成されたファイル .node_version
になります。
$ nodenv versions
* 8.11.1 (set by /{where_your_locally_set_node_is}/.node-version)
9.11.1
グローバルバージョンを設定する場合
$ nodenv global {バージョン番号}
ローカル環境のNode.jsバージョンを設定する場合
$ nodenv local {バージョン番号}
.node_version
というファイルが作成され、nodenvがローカルバージョンを認識できるようになります。
npmでモジュールをグローバルインストールする
今回は例として aws-cdk
というモジュールをインストールしようとしていますが、適宜読み替えてください。
- npmで
aws-cdk
をグローバルインストールする
$ npm install -g aws-cdk
/Users/{your_user_name}/.anyenv/envs/nodenv/versions/9.11.1/bin/cdk -> /Users/{your_user_name}/.anyenv/envs/nodenv/versions/9.11.1/lib/node_modules/aws-cdk/bin/cdk
+ aws-cdk@1.4.0
updated 1 package in 10s
インストールできたっぽいです。
モジュールのコマンドを確認する
$ cdk
-bash: cdk: command not found
# そんなコマンドねえよと怒られます
$ which cdk
# 反応なし
はい、通っていません。
追記:fifnel様からコメントでご指摘いただいた内容に修正しています
- 以下のコマンドを実行する
$ nodenv rehash
~/.anyenv/envs/nodenv/shims/ 以下に実行ファイルがコピーされてそのまま使えるようになるみたいです (手元では確認済)
以下、nodenv 1.3.2 のヘルプより
rehash Rehash nodenv shims (run this after installing executables)
コマンドが通っているか確認します。
$ cdk
Usage: cdk -a <cdk-app> COMMAND
# (略)
$ which cdk
/Users/{your_user_name}/.anyenv/envs/nodenv/shims/cdk
通りました!