skip to content
barorin&

npmとpnpmの基本|プロジェクト作成・依存関係の管理・トラブル対処

/ 8 min read

Table of Contents

はじめに

Node.jsのパッケージ管理まわりで、最初に押さえておくとよい操作をまとめました。古い記事のオプションをそのまま使い続けているケースが多い領域なので、現在どう書くのが標準かも書いています。

プロジェクトを作成する

Terminal window
$ npm init

対話形式でプロジェクト名やバージョンを聞かれ、package.json が作られます。すべて既定値でよければ、-y を付けると一気に作成できます。

Terminal window
$ npm init -y

パッケージをインストールする

Terminal window
# 通常の依存関係に追加
$ npm install パッケージ名
# 開発時のみ使うものは devDependencies に追加
$ npm install --save-dev パッケージ名

dependenciesdevDependencies は次のように使い分けます。

セクション 入れるもの
dependencies 実行時に必要なもの フレームワーク、ライブラリ
devDependencies 開発時だけ必要なもの テストツール、フォーマッター、型定義

本番環境では npm install --omit=dev で開発用を除いてインストールできるため、分けておくと配布物が軽くなります。

パッケージをアンインストールする

Terminal window
$ npm uninstall パッケージ名

こちらも --save / --save-dev の指定は不要で、package.json から自動的に削除されます。

pnpmを使う

pnpmは、npmやyarnと同じくJavaScriptのパッケージマネージャーです。npmで導入できます。

Terminal window
$ npm install -g pnpm

基本的なコマンドはnpmとほぼ同じです。

Terminal window
$ pnpm install
$ pnpm add パッケージ名
$ pnpm add -D パッケージ名
$ pnpm remove パッケージ名

dotenvで環境変数を管理する

APIキーなどをコードに直接書かずに扱うには、dotenv を使います。

Terminal window
$ npm install dotenv

プロジェクトのルートに .env を作り、変数を定義します。

Terminal window
DB_USER=hoge
DB_PASSWORD=123

読み込みは1行です。

require("dotenv").config();
const user = process.env.DB_USER;
const password = process.env.DB_PASSWORD;

Dockerコンテナ内で npm install が EAI_AGAIN になる

コンテナの中で npm install すると、この形のエラーが出ることがあります。

Terminal window
npm ERR! code EAI_AGAIN
npm ERR! errno EAI_AGAIN

EAI_AGAIN名前解決の失敗を示すエラーです。パッケージの取得先に接続できていません。DockerにDNSサーバーを設定すると解決します。

/etc/docker/daemon.json を作成(または編集)します。

{
"dns": ["8.8.8.8"]
}

設定後、Dockerの再起動が必要です。

Terminal window
$ sudo service docker restart

おわりに

パッケージ管理まわりは、--save のようにかつて必須だったオプションが不要になっていることがあります。エラーが出ていなくても、古い書き方をそのまま使い続けていないか、たまに見直すとよさそうです。

この記事を書いた人

barorinのプロフィール画像

barorin公認会計士

会計とITの二足のわらじで働く公認会計士です。Pythonを中心に、会計・監査の実務で実際に使っているコードや、Ubuntu・Raspberry Piの設定メモを書いています。