Node.js環境構築
はじめに
Node.jsを最近使いはじめたので、軽く知識をまとめておこうと思います。
目次
そもそもNode.jsとは?
- サーバサイドJavaScriptの実行環境。
- Google Chrome用JavaScript実行エンジン(V8)で動作する。
- 接続毎にプロセス生成とメモリ割り当ては行わず、それぞれの接続がNode.jsのプロセス内で実行されるイベントを起動する。
- ロックが許可されないため、I/O処理をブロックしない(デッドロックは発生しない)。
- 多数の同時接続を処理することが可能。
- ノンブロッキングI/Oを最奥している。
- コストの掛かるI/O処理を非同期で実行するのが特徴。
Node.jsのインストール
- https://nodejs.org/en/ にアクセスして、インストーラーのダウンロード。
- ダウンロードしたインストーラー実行し、任意のディレクトリに展開する。
- インストールが完了したら終了。npmコマンドが使用できるようになっている。
npm
- Node.js用のパッケージマネージャー(サーバサイド用)
npmで覚えるべき3つのコマンド
最低限これだけは覚えてね的な
- npm init
- npm install
- npm run
npm init
「このディレクトリ下はnpmの管理下に置く」という宣言。
実行すると、ディレクトリ直下にpackage.jsonが作成される。
■コマンド実行時に聞かれる内容
- name:プロジェクトの名称。デフォルトでは今いるディレクトリの名前。
- version:プロジェクトのバージョン。デフォルトでは1.0.0。
- description:プロジェクトの概要。
- entry point:モジュールの公開を行っているメインとなるjsソース。デフォルトではindex.js。
- test command:テスト用のコマンド。
- git repository:公開されているGitのリポジトリ。
- keywords:キーワード(npmの検索等で使用される?)
- author:開発者。
- license:開発物のライセンス。デフォルトではISC。
npm install
npmリポジトリからライブラリをダウンロードしてくるコマンド。
実行すると、node_modulesというディレクトリにライブラリが保存される。
また、package.json内に、どのライブラリを取ってきたのか記述することができる。
下記のように、saveオプションを付けて実行する。
$ npm install パッケージ名 --save
これを実行すると、package.json内に、下記のような行が追加される。
{ "dependencies": {"パッケージ名": "^1.2.3(バージョン)" }
以後、dependencies内に入ったライブラリは、npm install
だけで自動的にインストールすることができる。
■補足
-g
グローバル領域にインストール。
ターミナルで利用できるツールをインストールするために使用する。
※preinstallスクリプトにnpm install -g
でプロジェクトの依存スクリプトをインストールさせるのはやめましょう。
(ユーザ環境を書き換えることになるため)
--save
package.jsonのdependenciesにバージョン付きで書き込む。
--save--dev
package.jsonのdevDependenciesにバージョン付きで書き込む。
このオプションは開発時のみに利用するライブラリのバージョンを管理する。
npm ls -g
グローバルインストールされたパッケージを確認する。
npm run
npm scriptsと呼ばれるタスク実行機能を呼び出すコマンド。
package.json内に書かれたシェルスクリプトを実行するだけ。
{ "scripts": { "build(タスク名)": "browserify src/main.js > build/bundle.js" } }
下記コマンドを実行する。
npm run build(タスク名)
すると、下記コマンドが実行され、実行結果が表示される。
browserify src/main.js > build/bundle.js
また、npm run
だけを実行すると、現在どんなタスクがpackage.json内にあるかを一覧してくれる。
※npm scriptsでは基本的にワンライナー。
Gulp
- Node.jsをベースとしたビルドシステムヘルパー。
- ストリーミングビルドシステム。
- ファイルの処理をストリームで行う。
.pipe()
によって各処理を実行した結果を次の処理に渡す。
(.pipe()
はそれぞれの処理の間でファイルの読み書きを行わないので、I/Oによる不要な待ち時間が発生しない。)
まとめ
とりあえずこれだけわかればNode.js使いはじめることできるかな。
色々調べた結果を自分のメモ帳にまとめていたのを書きなおして載せただけなので、どっかの文章転載してるかもしれません。
その時はお手数ですがご連絡下さい。