Node.js(npm)についてまとめる。
npm(Node Packege Manager)は、Node.js用のパッケージ管理コマンド。
JavaScriptエコシステムツール・ライブラリはnpmで導入できるものが多い。
npmはNode.jsと同時にインストールされるので、Node.jsを入れておけばいい。
また、Node.jsはJavaScriptの実行エンジン。
ちなみにここでNode.jsのES6対応状況がわかる。
v8.3.0で 99% カバーしている。
インストール
ここでは、Node.jsのインストール方法は以下の「asdf」を利用する。
$ asdf plugin add helm # Node.jsプラグインを追加
$ asdf list-all nodejs # インストールできるNode.jsのバージョンを確認
$ asdf install nodejs 23.5.0 # バージョンを指定してインストール
$ asdf global nodejs 23.5.0 # バージョンの切り替え
$ node -v # Node.js のバージョン確認
v23.5.0
$ npm install -g npm # npm のバージョンアップ
$ npm -v # npm のバージョン確認
11.0.0
npmの使い方
公式ドキュメントはここ。
プロキシの設定が必要な場合は以下。
$ npm config set proxy http://<username>:<password>@<proxy-host>:<proxy-port>
$ npm config set https-proxy http://<username>:<password>@<proxy-host>:<proxy-port>
プロジェクトの作成
任意のディレクトリを作成して npm init
を実行すると package.json
が作成され、プロジェクトとなる。
いろいろ聞かれるが、全部Enterで問題無い。あとで変更可能。
$ mkdir nodejs-sample
$ cd nodejs-sample
$ npm init
package.json
はMavenでいう pom.xml
みたいなもの。(Javaの人向けでごめん)
パッケージのインストール
グローバルインストール
npm install -g <package_name>@<version>
でパッケージのインストールが可能。
-g
オプションがついてるのがポイント。
アンインストールは npm uninstall -g <package_name>
。
インストールパッケージ一覧の確認は npm list -g
。
インストール先は以下で確認できる。
# グローバルインストール先のディレクトリ
$ npm root -g
# グローバルインストール先の、コマンドディレクトリ
$ npm bin -g
ローカルインストール
npm install <option> <package_name>@<version>
でパッケージのインストールが可能。
インストールしたパッケージは package.json
に追記され、 node_modules/
配下に配備される。
オプションは以下の通り。
--save
、-S
package.json
のdependencies
に追記されるnpm install --production
した時にmode_modules/
に配備される- 開発したソフトウェアを動かすのに必要な依存ライブラリ
--save-dev
、-D
package.json
のdevDependencies
に追記されるnpm install --dev
した時にmode_modules/
に配備される- ソフトウェアを開発する際に必要になるツール・ライブラリ
--save-optional
、-O
package.json
のoptionalDependencies
に追記されるnpm install
した時にmode_modules/
に配備される(失敗してもスルーされる)
デフォルト設定の場合、 npm install
(オプション無)すると、 dependencies
、 devDependencies
、 optionalDependencies
の全てがインストールされる。
アンインストールは npm uninstall <package_name>
。
インストールパッケージ一覧の確認は npm list
。
パッケージの使い方
npmで導入したJavaScriptライブラリ( node_modules/
配下にある)は、JavaScriptのソースコードからほぼ以下の形式で呼び出すことができる。
var req = require('request')
上記は request
モジュールを呼び出して req
変数へ代入している例。
npmスクリプト
package.json
の scripts
にスクリプトを登録することにより簡易に実行することができる。
例えば以下。
"scripts": {
"test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/",
"test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require test/support/env --reporter spec --check-leaks test/ test/acceptance/",
"test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/ test/acceptance/",
"test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/"
}
上記のようにスクリプトを定義することにより npm test
、 npm test-ci
といった具合で登録したスクリプトを実行することができる。
package.json
の更新
手動で package.json
内のライブラリバージョンを変更してもよいが、 npm-check-updates
を利用すると楽。
$ npm install -g npm-check-updates
$ which ncu
/usr/local/bin/ncu
ncu
コマンドで package.json
のライブラリの最新バージョンを確認できる。
$ ncu
Checking /path/to/project/package.json
[====================] 17/17 100%
hexo-deployer-git ^0.3.1 → ^1.0.0
hexo-generator-archive ^0.1.4 → ^0.1.5
hexo-generator-index ^0.2.0 → ^0.2.1
hexo-renderer-ejs ^0.3.0 → ^0.3.1
hexo-renderer-marked ^0.3.2 → ^1.0.1
hexo-renderer-pandoc ^0.2.6 → ^0.3.0
hexo-renderer-stylus ^0.3.1 → ^0.3.3
hexo-server ^0.2.0 → ^0.3.3
Run ncu -u to upgrade package.json
ncu -u
で package.json
が書き換えられる。
Node.jsの使い方
Node.jsのAPIリファレンスはここ。
シンプルに動かしてみる
まず、Node.jsをJavaScriptエンジンとしてシンプルに動かしてみる。
■hello.js
exports.sayHello = function(){ return "Hello World !" }
■main.js
var hello = require('./hello.js');
console.log(hello.sayHello());
上記JSファイルを作成して下記を実行。
$ node main.js
Hello World !
node <JSファイル>
コマンドで実行できる。
HTTPサーバ
Node.jsでHTTPサービスを立ち上げてみる。
■app.js
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World !\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
下記を実行してブラウザで http://127.0.0.1:1337/
へアクセスすると「Hello World !」と表示される。
$ node app.js
Ctr+C
でサービスを停止できる。
この方法でHTTPサービスを起動した場合、ロジックでエラーが発生するとプロセスが終了する。
エラーが発生してもプロセスが終了しないようにする方法の1つとして forever の導入がある。
■foreverのインストール、起動、停止
$ npm install -g forever
$ forever start app.js
$ forever stop app.js
Node.jsに関する話題
- Node.jsでのJavaScriptメモリリークを発見するための簡単ガイド
- JavaScriptは ガベージコレクション を行う言語。