Node.jsの導入とnを使っての最新版へのアップデート

/

Node.js

Node.jsはV8 JavaScript Engineによって開発されたサーバーサイドでJavaScriptを動かすためのプラットフォーム環境です。ノンブロッキングI/Oによって非同期処理を行うという特徴があります。
nodejs.org

Google V8 JavaScriptEngine

Googleが開発したJavaScriptEngineでChormeブラウザなどに搭載されています。

npm

npmはNode.jsに搭載されたモジュールを管理するためのパッケージ管理システムです。
Node.jsはフレームワークではなくJavaScriptによって書かれた多くのモジュール(部品)を組み合わせて作られており、Node.jsに機能を追加・削除したい時にはnpmを使って行います。
npmjs.com

インストール

インストールする環境はubuntu16.04LTSを使用しました。

Node.js

ディストリビューションのパッケージ管理システムからNode.jsインストールします。

$ sudo apt-get update -y
$ sudo apt-get install -y nodejs npm
$ nodejs -v
v4.2.6
$ npm -v
3.5.2

n

無事にインストールが出来たので、このままでもNode.jsとnpmを使うのに支障はありませんがNode.jsはアップデートが頻繁に行われるのでディストリビューションのパッケージ管理システムからだとインストール出来るNode.jsのバージョンが古い場合があります。(2016/08現在で最新版のNode.jsは安定板は4.5.0で最新版は6.4.0)

そのためNode.jsのパッケージであるnを利用してNode.jsのアップデートを実行します。
これ以上無いぐらいシンプルな名前なので、ぱっと見はなんのためのパッケージなのかさっぱり解りませんがnを使うとNode.jsのアップデートとバージョンの管理をする事が出来ます。

#nのインストール
sudo npm install -g n
#最新の安定版(LTS)のNode.jsをインストール
$ sudo n lts
#最新版のNode.jsをインストール
$ sudo n latest
#インストールしたバージョンのリストの表示
$ n
 4.5.0
・6.4.0
#リストの一覧表示の終了
$ Ctrl-C
$ node -v
6.4.0
$ npm -v
3.10.3
#インストール済みのバージョンの削除
$ sudo n rm 4.5.0

削除はrmコマンドの代わりにでも実行できます。

$ sudo n- 4.5.0

nを利用してインストールしたNode.jsとubuntuのapt-getからインストールしたNode.jsはnodeコマンドとnodejsコマンドによって使い分けが出来るようになっていますが、紛らわしいのでubuntuのapt-getからダウンロードしたほうは削除しておきます。

$ sudo apt-get purge -y nodejs npm

nは使いやすくて便利なパッケージですが、ツール全体がこれでもかというぐらいシンプルを目指して作られているのも面白いです。
n/Github

Node.jsでHello World

インストールも済んだので動作確認としてNode.jsでHello Worldを実行してみます。

$ node
#Node.jsを起動すると対話環境が立ち上がる
> console.log("Hello world!!");
Hello world!!
undefined
>

Node.jsの終了は.exitを実行します。

> .exit

npmでパッケージを追加する

npmはインストール時にオプションを利用する事でパッケージのインストール先を指定することが出来ます。
開発ツールなど良く使うものはグローバルを指定してシステム全体から使えるようにしておくと便利です。

#パッケージをシステム全体にインストール
$ sudo npm install -g gulp-cli

一方でプロジェクトに組み込んで利用するようなパッケージの場合にはプロジェクトを実行する環境やライブラリ同士のバージョンの組み合わせによってエラーが生じることがあります。
そのため個々のプロジェクト毎にインストールしてバージョンを管理しておくとパッケージの衝突を防ぐ事が出来ます。

#パッケージをプロジェクトのローカルにインストール
$ npm install --save-dev jquery

#バージョンを指定してパッケージをインストール
$ rpm install jquery@2.1.0

#バージョンを指定してパッケージをローカルにインストール
$ npm install --save-dev jquery@2.1.0

プロジェクト毎のパッケージはオプションを使えばそのままでもローカルにインストール出来ますがpackage.jsonを使うとより管理しやすくなります。

#package.jsonの作成
$ npm init

package.json作成する際には対話形式でプロジェクトの名前などを聞かれますが、とりあえず全て飛ばしてもパッケージの管理自体は可能ですしプロジェクトの設定はpackag.jsonに書き込まれるので後から変更する事も出来ます。

作ったばかりのpackage.jsonにはなんのパッケージの情報もないので、package.jsonのあるディレクトリでプロジェクトのローカルにパッケージをインストールしてみます。

$ sudo npm install --save-dev jquery@2.1.0

するとpackage.json内のdependenciesの欄にインストールしたパッケージの名前とバージョンが書き込まれます。

{
  "name": "tmp_npm",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "dependencies": {
    //パッケージの名前とバージョンが追加される
    "jquery": "^2.1.0"     
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

package.jsonのあるディレクトリからをインストール実行すると自動的にdependenciesにパッケージの情報が書き込まれて行くので、今現在プロジェクトにインストールされているパッケージが一目で解るようになります。またpackage.jsonを直接編集してパッケージの名前とバージョンを記入したあとにnpm installを実行するとpackage.jsonで指定したパッケージが全てローカルにインストールされます。

そのためpackage.jsonごとコピーしてnpm installを実行すれば、プロジェクトの環境を簡単に再現する事が出来ます。