りなっくすとらずぱい!

Raspberry Pi初心者に向けた各コマンドの説明、プログラムの作り方について紹介しています!

npm - Node.js用パッケージ管理コマンド

f:id:ibuquicallig:20190517182402p:plain

この記事ではnpmの基本的な使い方と例、オプションなどについて解説しています。

この記事でできること

  • npmコマンドを利用して必要なモジュールをインストールすることができる。
  • Node.jsで動くプロジェクトを作成することができる。
  • package.jsonファイルの内容について理解できる。

前の記事

Node.jsのインストール方法について以下の記事で解説しています。またRaspberry Pi Zeroでインストールする場合は他のLinuxディストリビューションとは少し異なったインストール方法となりますので、注意してください😎

新規Node.jsプロジェクトを作成する

npm initコマンドを使用することでNode.jsで動くプロジェクトのテンプレートを作成することができます。実行すると対話的に初期設定を行うことができます。

現在いるディレクトリがプロジェクトとなるので、先にmkdirでプロジェクト用のディレクトリを作成して移動しておきましょう。

package name: (npm-example)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author: taneyats
license: (ISC)
About to write to /home/taneyats/project/npm-example/package.json:

{
  "name": "npm-example",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "taneyats",
  "license": "ISC"
}


Is this OK? (yes)

丸かっこで提示されている値がデフォルト値です。基本的にはエンターキー連打でOKかと思います。author(開発者)ぐらいは設定しておいてもいいかもしれません。

完了するとpackage.jsonというファイルが作成されます。これでプロジェクトの作成は完了です。

コマンド

上記のプロジェクトを使ってモジュールをインストールしたりする手順を確認していきます。

npm install --save [パッケージ名]

このコマンドを実行することでnpmのリポジトリからモジュールをインストールすることができます。--saveをつけるとpackage.json内にインストールしたモジュール名が追記され、プロジェクト再作成時などに一括でインストールできるようになります。(npm installの項参考)

試しに処理を定期実行できるようにするnode-cronというモジュールをインストールしてみます。使いたいモジュールを探すときはhttps://www.npmjs.com/ から検索したりします。

$ npm install --save node-cron
...
+ node-cron@2.0.3
added 3 packages from 3 contributors and audited 3 packages in 5.586s
found 0 vulnerabilities

3パッケージが追加されたと表示されていますが、2パッケージはnode-cronが使用する依存モジュールとなっています。インストールしたモジュールはプロジェクト内のnode_modules/というディレクトリにあります。

プログラム内でrequire('node-cron')として変数に代入することで使用することができます。これに関しては次の記事で一緒に簡単な処理を作ってみましょう😉

npm install -g [パッケージ名]

Node.jsプロジェクト内で使用するのではなく、コマンドライン上で使用することができるパッケージもnpmには豊富に存在しています。

例えば、Node.jsで作成した処理をデーモン化(バックグラウンドで実行)することができるforeverというパッケージがあります。

sudo npm install -g [パッケージ名]でインストールすることができます。実行には管理者権限が必要となります(/usr/lib/にインストールされるため)。

$ sudo npm install -g forever 
...
$ forever --version

foreverコマンドの使い方や何がそんなに便利か、については以下の記事で紹介しています。

(作成中)

npm install

このコマンドを実行することで、package.jsondependencies記載されているモジュールを一括でインストールすることができます。

ごくごく小規模なプロジェクトでもnode_modules/内のファイルは膨大になるため、gitなどのバージョン管理からは除外されることがほとんどです。プロジェクトをクローンしてから各自npm installを実行してモジュールを取得するという流れになります。

先ほどのnpm install --save node-cronでdependenciesに追記されているのでnode_modules/をいったん削除してnpm installを実行してみましょう。

$ rm -rf node_modules/
$ npm install
...
$ cd node_modules/
$ ls
node-cron  opencollective-postinstall  tz-offset

ちゃんと依存モジュールごとインストールされていますね!新しいプロジェクトをクローンしてきたときには忘れずに実行する必要があります。

npm [package.jsonで定義したコマンド]

package.jsonscriptsに定義されているコマンドを実行することができます。たいていの場合は起動コマンドやビルド用のコマンドが割り当てられています。

例えばExpressで作成されているAPIサーバーには以下のようなコマンドが割り当てられています。

"scripts": {
    "start": "node ./bin/www"
},

サーバーのポート番号などのオプションで長ったらしくなったコマンドにエイリアスを作成するという感じですね🤔

次の記事

npmのモジュールを利用してちょっとしたスクリプトを作成します。(天気予報など)

[:embed]