Works by

Ren's blog

@rennnosuke_rk 技術ブログです

【Node.js】npmのパッケージserveを使ってサーバを立てる

npmとは

npmはNode.js環境下で使われるJavaScriptのパッケージマネージャです。

Javaで使われるMavenpythonのpipなどのようにライブラリを一元管理することができ、
コマンド一発で外部リポジトリからライブラリをインストールすることができます。

またJavaScriptのパッケージマネージャだけあってフロントエンドの開発に親和性が高く、
npm scriptsと呼ばれるスクリプトを呼び出し、ビルドやサーバ起動等もできます。

npmのインストール

# nodebrew(node.jsのバージョン管理ツール)をインストール
$ brew install nodebrew

# 最新のnode.jsをインストール
$ nodebrew install-binary latest

# node.jsのバージョンを指定して有効化
$ nodebrew use v9.8.0

# nodeコマンドが使えるように使用しているシェルのrcファイルにPATH記述追加
$ echo 'export PATH=$PATH:/Users/...../.nodebrew/current/bin' >> ~/.bashrc
$ source ~/.bashrc

$ npm -v

npmが管理するディレクトリを初期化

npmはプロジェクトごとにパッケージの管理を行うことができます。
パッケージ管理の対象としたいディレクトリで以下のコマンドを実行します。

$ npm init

コマンドを実行すると、初期化を行うにあたりいくつか質問されます。
この内容はpackage.jsonファイルとなって、プロジェクト配下に保存されます。

$ ls
package.json

$ cat package.json
{
  "name": "test",
  "version": "1.0.0",
  "description": "test package",
  "main": "index.js",
  "scripts": {
    "test": "test"
  },
  "repository": {
    "type": "git",
    "url": "none"
  },
  "keywords": [
    "test"
  ],
  "author": "rennnosuke",
  "license": "MIT"
}

今後、npmを使ってビルドやサーバ起動をする際にpackage.jsonが必要になります。

npmでサーバを立てる

npmコマンドによってサーバを立てます。

# npm serveのインストール
$ npm install -g serve

# 実行
$ serve

   ┌──────────────────────────────────────────────────┐
   │                                                  │
   │   Serving!                                       │
   │                                                  │
   │   - Local:            http://localhost:5000      │
   │   - On Your Network:  http://192.168.0.10:5000   │
   │                                                  │
   │   Copied local address to clipboard!             │
   │                                                  │
   └──────────────────────────────────────────────────┘

無事立ち上がりました!

認証込みでサーバ立ち上げ

--authオプションを組み合わせることで、ベーシック認証込みでサーバを立ち上げることができます。

$ SERVE_USER=leo SERVE_PASSWORD=1234 serve --auth

アプリケーション内でserveを使用

アプリケーション内でserveを呼び出すこともできます。
動的にサーバ起動・終了・設定を行いたい場合に。

const serve = require('serve');
const server = serve(__dirname, {
  port: 1337,
  ignore: ['node_modules']
});

参考文献

www.npmjs.com

www.npmjs.com