Nodachisoft Nodachi Sword Icon
  
@あまじ✎ 2021年1月31日に更新

npm package.json の dependencies、devDependencies、peerDependenceiseの使い分け

ページ内で書いていること

npm でプロジェクトを開発するとき、 package.json ファイルの中に、依存関係を書くと思います。

自分で npm パッケージを公開するにあたり、dependencies、devDependencies、peerDependencies について、 確認した書く内容と効果を書いておきます。

確認した環境とバージョン

  • OS: Windows 10 Home, version 2004
  • node-js: v12.18.2
  • npm: v6.14.5

パッケージの構成例

パッケージはこんな感じをイメージしてます。

開発をするときに作ったのが node.js の親プロジェクト、必要なライブラリなどを 子プロジェクトと表現しています。

例えば、jQuery のライブラリを使う時などが子プロジェクトです。

パッケージ構成

dependencies

プロジェクトに必要な外部パッケージを書きます。

子プロジェクト(jQuery 等)の package.json の dependencies に書いてある必要ライブラリは、 自動的にインストールされ、親プロジェクト内の node_modules フォルダ内にインストールされます。

package.json に追加する方法

npm install <package-name> でプロジェクトの実行に必要となるライブラリをインストールすれば、 自動的に npm が package.json ファイルに追記してくれます。

devDependencies

子パッケージ

パッケージ本体の方を開発する時だけに必要となるパッケージを書くとよいです。

いろんなプロジェクトから使えるようなライブラリを作って、公開する場合は、 図でいうと子プロジェクトの部分を開発すると思います。

子プロジェクトを開発する時だけ必要なテスト系ライブラリやビルドのツール等は 利用者(親プロジェクト)からすればインストールしたくないですよね。

そういった開発のみで使用するライブラリ関連は、devDependencies の項目に 書いておきます。

私の場合、 package.json には jest や Jasmine などのテストコード実行に必要なライブラリや、 稼働確認に必要なツール、ビルドツールなどを入れておいてます。

package.json に追加する方法

手動で package.json に追加して、npm install コマンドを使うか、 npm install <package-name> --save-dev のように「--save-dev」とオプションを付けて、 開発で使うパッケージを指定してインストールすれば、package.json ファイルが更新されて、追記されます。

peerDependenceise

npm パッケージを自作して、別のプロジェクトから使ってもらう時などに書くと便利です。

子パッケージ

このパッケージを動かすのに必要な前提となるパッケージ(使う時には親プロジェクトにインストールしておいてほしいパッケージ)を指定します。 npm ver.3 以降であれば、peerDependencies が書いてある npm パッケージをインストールする時に、この欄に記載しているライブラリが未インストールだと 警告を出してくれます。勝手に親パッケージにインストールされたりはしません。

例えば、npm パッケージの「gatsby-remark-text-decoration」は Gatsby という静的サイトジェネレータのパッケージのインストールが前提となっているので、 下のように package.json が書いてあります。

peerDepenencies
  "peerDependencies": {
    "gatsby": "^2.0.0"
  },

このパッケージを、Gatsby をインストール(npm install)していない状態で、いきなりインストール使用とすると、 下のように警告が表示されます。

> npm install gatsby-remark-text-decoration
npm WARN gatsby-remark-text-decoration@1.0.5 requires a peer of gatsby@^2.0.0 but none is installed. You must install peer dependencies yourself.

WARN gatsby-remark-text-decoration@1.0.5 requires a peer of gatsby@^2.0.0 but none is installed. You must install peer dependencies yourself. と書いてある通り「gatsby-remark-text-decoration の 1.0.5」は「gatsbyのバージョン2.0.0 以上」が必要だけど、なにもインストールされてないよ。使うならこれを自分自身で手動でインストールしてね。と警告してくれています。

おわりに

npm パッケージを自作するまで曖昧だった、 dependencies、devDependencies、peerDependencies の使い分けについてすっきりです!

非常に参考になったサイトさまや、参考文献など

(英語)docs.npmjs.com - Specifying dependencies and devDependencies in a package.json file

(英語)docs.npmjs.com - package-json - peerdependencies

Github - gatsby-remark-text-decoration

著作権など

  • npmは npm, Inc. の登録商標です。

ページの更新履歴

更新日 更新内容
更新なし
 
 
送信しました!

コメント、ありがとうございます。

なんかエラーでした

ごめんなさい。エラーでうまく送信できませんでした。ご迷惑をおかけします。しばらくおいてから再度送信を試していただくか、以下から DM などでご連絡頂ければと思います。

Twitter:@NodachiSoft_jp
お名前:
 
連絡先:
 
メッセージ:
 
戻る
内容の確認!

以下の内容でコメントを送信します。よろしければ、「送信」を押してください。修正する場合は「戻る」を押してください

お名前:
 
連絡先:
 
メッセージ:
 
Roboto からの操作ではないという確認のため確認キーを入れてください。
確認キー=95
戻る
 / 
送信確認へ
コメント欄
コメント送信確認へ

関連ありそうな記事(1件)です!

初めて npm パッケージを一般公開する時の手順

#Npm✎ 2021-01-31
初めて npm パッケージを一般公開した手順を整理してまとめたものです。
広告領域
追従 広告領域
目次
npm package.json の dependencies、devDependencies、peerDependenceiseの使い分け
npm package.json の dependencies、devDependencies、peerDependenceiseの使い分け
ページ内で書いていること
ページ内で書いていること
確認した環境とバージョン
確認した環境とバージョン
パッケージの構成例
パッケージの構成例
dependencies
dependencies
package.json に追加する方法
package.json に追加する方法
devDependencies
devDependencies
package.json に追加する方法
package.json に追加する方法
peerDependenceise
peerDependenceise
おわりに
おわりに
非常に参考になったサイトさまや、参考文献など
非常に参考になったサイトさまや、参考文献など
著作権など
著作権など
ページの更新履歴
ページの更新履歴
Nodachisoft © 2020