npmとpnpmの基本|プロジェクト作成・依存関係の管理・トラブル対処
/ 8 min read
Table of Contents
はじめに
Node.jsのパッケージ管理まわりで、最初に押さえておくとよい操作をまとめました。古い記事のオプションをそのまま使い続けているケースが多い領域なので、現在どう書くのが標準かも書いています。
プロジェクトを作成する
$ npm init対話形式でプロジェクト名やバージョンを聞かれ、package.json が作られます。すべて既定値でよければ、-y を付けると一気に作成できます。
$ npm init -yパッケージをインストールする
# 通常の依存関係に追加$ npm install パッケージ名
# 開発時のみ使うものは devDependencies に追加$ npm install --save-dev パッケージ名dependencies と devDependencies は次のように使い分けます。
| セクション | 入れるもの | 例 |
|---|---|---|
dependencies |
実行時に必要なもの | フレームワーク、ライブラリ |
devDependencies |
開発時だけ必要なもの | テストツール、フォーマッター、型定義 |
本番環境では npm install --omit=dev で開発用を除いてインストールできるため、分けておくと配布物が軽くなります。
パッケージをアンインストールする
$ npm uninstall パッケージ名こちらも --save / --save-dev の指定は不要で、package.json から自動的に削除されます。
pnpmを使う
pnpmは、npmやyarnと同じくJavaScriptのパッケージマネージャーです。npmで導入できます。
$ npm install -g pnpm基本的なコマンドはnpmとほぼ同じです。
$ pnpm install$ pnpm add パッケージ名$ pnpm add -D パッケージ名$ pnpm remove パッケージ名dotenvで環境変数を管理する
APIキーなどをコードに直接書かずに扱うには、dotenv を使います。
$ npm install dotenvプロジェクトのルートに .env を作り、変数を定義します。
DB_USER=hogeDB_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 すると、この形のエラーが出ることがあります。
npm ERR! code EAI_AGAINnpm ERR! errno EAI_AGAINEAI_AGAIN は名前解決の失敗を示すエラーです。パッケージの取得先に接続できていません。DockerにDNSサーバーを設定すると解決します。
/etc/docker/daemon.json を作成(または編集)します。
{ "dns": ["8.8.8.8"]}設定後、Dockerの再起動が必要です。
$ sudo service docker restartおわりに
パッケージ管理まわりは、--save のようにかつて必須だったオプションが不要になっていることがあります。エラーが出ていなくても、古い書き方をそのまま使い続けていないか、たまに見直すとよさそうです。
