Mac
Node.js
nvm

macでNode.jsの環境設定

More than 1 year has passed since last update.

Node.jsを使ってみたいと思った時に気になった環境設定のメモ

インストールをしようとした時に出てくるワード

・nvm(Node Version Manager)

・Express(Node.js上で動作するWebアプリのフレームワーク)

★こんがらがる「nvm」と「npm」(追記:20151215)


npmは Node.js をインストールすれば一緒にインストールされるとのこと。

・nvm(Node Version Manager) は Node.js 自体をバージョン管理するツール

・npm(Node Package Manager) は Node.js で作られたパッケージモジュールを管理するツール

Node.jsのパッケージを入れたいときは

  $npm install パッケージ名

で簡単にインストールできます。

「-g」オプションをつけるとグローバルインストールになり、このグローバルインストールしたパッケージは全てのプロジェクトで使えるようになるとのことです。


★そもそも、node.jsの本家サイトからnode.jsをダウンロードするだけではいけないのか?


Node.jsは開発が活発に行われており、更新頻度が高いそうです。

また、古いバージョンに戻したりもしやすいように、Nodeバージョン管理のnvmを利用するほうが開発サイドとしては使い勝手がよいってことらしいです。


直接Node.jsをダウンロードしてインストールする方法の参考URL

tettori

nvmをインストールしてからNode.jsをインストールする方法の参考URL

複数バージョンのNode.jsを使い分けよう!

nvmがすでに入っていてnvmのバージョンを上げたい場合の参考URL

http://qiita.com/n0bisuke/items/66e32609c7d941dc8c94

★Expressって使う必要があるのか?


nvmのパッケージとして提供されているMVCフレームワークのExpress。

node.jsの書き方でjsファイルを書くこともできるが、複雑な処理をしたいときにexpressで書いたほうが便利。

参考:http://www.atmarkit.co.jp/ait/articles/1503/04/news047.html

nvmのパッケージはいろいろあるらしい。



nvm(Node Version Manager)インストール



  1. https://github.com/creationix/nvm より入手「Install script」参照

  2. macのターミナルを立ち上げて以下を実行すると自分の環境下にインストールされる


$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 7149 100 7149 0 0 10209 0 --:--:-- --:--:-- --:--:-- 10198
=> Downloading nvm from git to '/Users/****/.nvm'
=> Cloning into '/Users/****/.nvm'...
remote: Counting objects: 3824, done.
:
: 略
:


ホームの下に、.nvmができました。

このままだと、素直に使えないので以下のURLを参照して[.bash_profile]を作成する

MacにNode.jsをインストールする



.bash_profile

# nvm設定

[[ -s ~/.nvm/nvm.sh ]] && . ~/.nvm/nvm.sh
nvm use default
npm_dir=${NVM_PATH}_modules
export NODE_PATH=$npm_dir

# 毎回実行しなくていいように設定を反映させるコマンドも書いておく
source ~/.nvm/nvm.sh


nvmが使えるか確認

$ nvm --version

0.25.4

[20151126.補足]

nvmのバージョンが古いなと感じたらバージョンをあげます。

こちらを参考に以下のようにすればバージョンがあがりました。

$ cd ~/.nvm

$ git pull origin master
$ source ~/.nvm/nvm.sh

[20160510.補足]

パッケージ管理用のnvmのバージョンが古いとかどういうこと? と疑問が・・

nvmのバージョンが古いと、node.jsのバージョンをあげたい時に確認する「nvm ls-remote」を実行したときに最新バージョンが出てきていないことがあるのです。

なので、久々にnvmコマンドを使う場合は、nvmのバージョン確認をしてみたほうがいいですね。


まとめ

$ nvm --version

0.29.0<ー 新しいのかよくわからない・・・
$ cd ~/.nvm
$ git fetch
remote: Counting objects: 545, done.
remote: Compressing objects: 100% (28/28), done.
remote: Total 545 (delta 250), reused 245 (delta 242), pack-reused 275
Receiving objects: 100% (545/545), 218.27 KiB | 54.00 KiB/s, done.
Resolving deltas: 100% (355/355), completed with 52 local objects.
From https://github.com/creationix/nvm
c742ab7..ec2f450 master -> origin/master
:
* [new tag] v0.29.0 -> v0.29.0 <ー今これらしい
* [new tag] v0.31.1 -> v0.31.1
* [new tag] v0.30.0 -> v0.30.0
* [new tag] v0.30.1 -> v0.30.1
* [new tag] v0.30.2 -> v0.30.2
* [new tag] v0.31.0 -> v0.31.0 <ーこれが最新版らしいのでupdateしよう!
$ git pull origin master
$ source ~/.nvm/nvm.sh
$ nvm --version
0.31.1

[20170112.補足]

久々にnvmの新しいバージョンを確認してみようと実行してみると、エラーがでました。

$ git fetch

Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.

Xcode のライセンスに同意する必要があるようです。Xcodeを起動して出てきたダイアログの "Agree" を押します。

インストールするためにパスワードを聞かれて、XcodeのComponentインストールが始まります。

スクリーンショット 2017-01-12 14.33.10.png

正常に終われば、再度ターミナルからgit fetchして状態を確認できました。

<ちょっとした疑問>

macターミナルを起動した時に毎回node情報が出てくるようになりました。

Last login: Tue Dec 15 14:16:34 on ttys001

Now using node v0.12.8 (npm v3.5.0)
$

これは.bash_profileを修正したので、Terminalの起動時にnvmが自動で読み込まれる

せいです。

node用スクリプトをすぐに実行できる状態になっています。

[20160127.補足]

インストール作業の状態だとパスは通っていたのに、ターミナル立ち上げ直したらパスとおってないじゃん!

npmってうっても「-bash: npm: command not found」nodeって打ってもbashエラー

ってなったときに、、、

.bash_profileを見直してください。

「nvm use default」 のdefaultがわかっていないので起きてるみたい。

そのせいで、npmのパスも通っていない。

使用するバージョンを書いておいてください。

そうすればnpmもnodeもターミナル立ち上げたときにパスが通ります。


.bash_profile

:

nvm use 0.12.9 <ーdefaultを書き換えるだけ。
:


Node.jsをインストールする

インストール可能なNode.jsのバージョンを確認。安定しているバージョンをいれないといけない。

Node.jsはマイナーバージョンが偶数バージョンのものが安定版らしい。

$ nvm ls-remote

v0.1.14
v0.1.15
v0.1.16
v0.1.17
v0.1.18
: 略
v0.12.7
iojs-v1.0.0
: 略
iojs-v2.4.0
iojs-v2.5.0
iojs-v3.0.0

今回は「v0.12.7」をいれることにする。

$ nvm install  v0.12.7

######################################################################## 100.0%
Now using node v0.12.7 (npm v2.11.3)

node.jsが使えるか確認

$ node -v

v0.12.7

[20151126.補足]

[$ nvm ls-remote]した時にインストールされているバージョンは青くなります。

使用するバージョンを切り替えたい場合、[$ nvm use バージョン]とすると変わります。


v0.12.7=>v0.12.8に変更

$ node -v

v0.12.7
$ nvm use 0.12.8
Now using node v0.12.8 (npm v2.14.9)
$ node -v
v0.12.8

★バージョンを上げる時の注意点(補足:20151126)

処理系が変わる時はビルドし直す必要があるため、node_modules入れ直しをしないと思わぬところで動かなくなるなどの現象にハマるらしいです。

node.jsをバージョンアップしたら最初にやるべきこと

もし、マイナーバージョンをアップして動作がおかしくなったら一旦node_modulesを削除してビルドし直す方法も視野にいれてみてください。

(v0.10 => v0.11などの場合は必要とのこと。)

〜〜〜〜〜〜

ところで、node.jsはどこにインストールされたのだろう?

nvmを使っている場合は、

~/.nvm/versions/node/ をみてみるとそこにインストールしたバージョンのnode.jsがあるようです。

なるほど、だからレンタルサーバでもインストールはできるんですね。

〜〜〜〜〜〜

<ちょっと使用例>

適当場所で以下の様なファイルを作ります。


index.js

var http = require('http');

http.createServer(function(req,res){
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hellow World!!');
}).listen(3000);
console.log('Server running at http://localhost:3000/');

これは http モジュールを require して、簡易HTTPサーバを作成したjsファイルです。

このファイルを実行してみます。

$ node index.js 

Server running at http://localhost:3000/

=>これでブラウザにアクセスすればindex.jsに記載している内容が実行される

これでブラウザから「http://localhost:3000/ 」を開いてみると・・・

スクリーンショット 2015-08-06 17.10.55.png


表示されちゃいました!

nodeコマンドを抜けるときは Cntl+C で抜けれます。

node.jsのモジュール群の参考は

http://nodejs.jp/nodejs.org_ja/api/index.html


Expressのインストール

npm install express -g ではインストールできないみたいです。

参考:http://qiita.com/armorik83/items/d8c74a78759f7af18dba

$ npm install -g express-generator

/Users/***/.nvm/versions/node/v0.12.0/bin/express -> /Users/***/.nvm/versions/node/v0.12.0/lib/node_modules/express-generator/bin/express
express-generator@4.13.1 /Users/***/.nvm/versions/node/v0.12.0/lib/node_modules/express-generator
├── sorted-object@1.0.0
├── commander@2.7.1 (graceful-readlink@1.0.1)
└── mkdirp@0.5.1 (minimist@0.0.8)

適当な場所で、exsampleというWebテンプレートになるフォルダを用意します。

ここらへんを参考にしたのは

http://www.atmarkit.co.jp/ait/articles/1503/04/news047_3.html

http://qiita.com/deconcepter/items/e423046899575fe1846b

$ express example

create : example
create : example/package.json
create : example/app.js
create : example/public
create : example/public/javascripts
create : example/public/images
create : example/public/stylesheets
create : example/public/stylesheets/style.css
create : example/routes
create : example/routes/index.js
create : example/routes/users.js
create : example/views
create : example/views/index.jade
create : example/views/layout.jade
create : example/views/error.jade
create : example/bin
create : example/bin/www

install dependencies:
$ cd example && npm install

run the app:
$ DEBUG=example:* npm start

$ cd example && npm install
$ DEBUG=example:* npm start

ちょっとわかりにくかったけど、


  1. expressコマンドでWeb表示されるドメイン直下のディレクトリ(example)をつくる。

  2. 作ったexampleに移動し、npmコマンドでexpressのライブラリをインストールする

  3. DEBUG=example:* npm start することでブラウザhttp://localhost:3000/で表示される。

ってことみたいです。


Expressのバージョンアップについて (追記:20151126)

今使用しているGlobalパッケージが古くなっているかを確認する

$ npm outdated -g

Package Current Wanted Latest Location
npm 2.14.9 3.5.0 3.5.0 /Users/****/.nvm/versions/node/v0.12.8/lib > npm

古いパッケージをつかっているのがわかれば、それをバージョンアップする。

$ npm update -g

/Users/****/.nvm/versions/node/v0.12.8/bin/npm -> /Users/****/.nvm/versions/node/v0.12.8/lib/node_modules/npm/bin/npm-cli.js
npm@3.5.0 /Users/****/.nvm/versions/node/v0.12.8/lib/node_modules/npm

$ npm outdated -g
Package Current Wanted Latest Location
npm 3.5.0 3.5.1 3.5.0

★★参考まで

node.jsのバージョンアップではいろいろ気をつけておく必要があるらしい

npmもインストールしている状態でnode.jsを最新にアップデートする方法として

Node.jsとnpmをアップデートする方法

こんなのもあるらしい。


Node.jsをアンインストール(追記:20151215)

・・・・そんなこともあります。未検証ですがメモとして残しておきます。

参考URL:

Macにインストールしたnode.jsをアンインストールしてHomebrewで管理する

削除の順番は以下がいいらしいです。

 ・npmをアンインストール

 ・node.jsをアンインストール


npmアンインストール

$ sudo npm uninstall npm -g



nodeアンインストール

$lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom \

| while read i; do
sudo rm /usr/local/${i}
done
sudo rm -rf /usr/local/lib/node \
/usr/local/lib/node_modules \
/var/db/receipts/org.nodejs.*

※「\」はコマンドライン上での改行

※「lsbom」はBOMファイルの内容を表示するコマンド:参考

[20170112:補足追記]

npmコマンドの参考にとても便利でした

npmコマンドの使い方

久々だと、アップデートの方法もちょっと忘れるのでメモメモ

Node.jsとnpmをアップデートする方法