dependencies と devDependencies の使い分け:node.js プロジェクトのバージョン管理

2024-04-02

node.js, npm, save における --save と --save-dev の違い

概要

オプション説明対象インストール先
--saveプロジェクトの動作に必要なパッケージをインストール開発者と利用者dependencies
--save-dev開発時にのみ必要なパッケージをインストール開発者のみdevDependencies

詳細

--save

  • プロジェクトの動作に必須なパッケージをインストールします。
  • 開発者だけでなく、利用者もインストールする必要があります。
  • package.jsondependencies フィールドに登録されます。

--save-dev

  • 利用者はインストールする必要はありません。

  • ライブラリ express をプロジェクトの動作に必須として使用する場合
npm install express --save
  • 開発時にのみ使用するテストフレームワーク mocha をインストールする場合
npm install mocha --save-dev

注意事項

  • npm v5 以降では、デフォルトで --save オプションが使用されます。
  • --save--save-dev は同時に使用できます。
  • どちらを使用するべきか迷った場合は、--save-dev を使用するのが安全です。



{
  "name": "my-project",
  "version": "1.0.0",
  "description": "My awesome project",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "keywords": ["node", "javascript"],
  "author": "Bard",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.1"
  },
  "devDependencies": {
    "mocha": "^8.4.0",
    "chai": "^4.3.4"
  }
}

index.js

const express = require('express');

const app = express();

app.get('/', (req, res) => {
  res.send('Hello, world!');
});

app.listen(3000, () => {
  console.log('App listening on port 3000');
});

実行

npm install
npm start

ブラウザで http://localhost:3000 を開くと、「Hello, world!」と表示されます。

説明

  • 上記のコードでは、express パッケージは --save オプションでインストールされています。これは、express がプロジェクトの動作に必須であるためです。
  • mochachai は開発時にのみ使用するテストフレームワークなので、--save-dev オプションでインストールされています。
  • 上記は簡単な例です。実際のプロジェクトでは、より多くのパッケージを使用する可能性があります。
  • 各パッケージの詳細については、npm のドキュメントを参照してください。



--save と --save-dev の代替方法

手動で package.json を編集する

  • dependencies または devDependencies フィールドに、インストールしたいパッケージの名前とバージョンを直接記述します。

npm link を使用する

  • ローカルのパッケージをインストールする際に使用します。

Yarn を使用する

  • Yarn は npm の代替パッケージマネージャーです。
  • Yarn では、--prod--dev フラグを使用して、dependenciesdevDependencies を区別できます。

その他のツールを使用する

  • npm-run-all や concurrently などのツールを使用して、複数の npm コマンドをまとめて実行できます。

これらの方法は、それぞれメリットとデメリットがあります。自分に合った方法を選択してください。

  • メリット:
  • デメリット:
    • ミスをしやすい
    • バージョン管理が難しい
  • メリット:
  • デメリット:
  • デメリット:
  • メリット:
    • 複数の npm コマンドをまとめて実行できる
    • タスクを自動化できる
  • デメリット:
  • 上記の方法を使用する前に、それぞれの方法の詳細をよく理解してください。
  • 間違った方法を使用すると、プロジェクトが動作しなくなる可能性があります。

node.js npm save


【初心者向け】Node.jsで現在のスクリプトのパスを取得する方法を徹底解説

process. argv プロパティは、コマンドライン引数を格納する配列です。最初の要素は実行中のスクリプトのパスです。__dirname 変数は、実行中のスクリプトのディレクトリパスを格納します。path. resolve() 関数は、複数のパスを引数として受け取り、絶対パスを返します。...


Node.jsでデータベースをセットアップする3つの方法:それぞれのメリットとデメリット

データベースの種類を選択するまず、使用するデータベースの種類を選択する必要があります。Node. jsでよく使われるデータベースには、MySQL、PostgreSQL、MongoDBなどがあります。それぞれの特徴は以下の通りです。MySQL: オープンソースのRDBMSで、使いやすく、多くの開発者に利用されています。...


【初心者向け】Passport.jsで始めるNode.jsアプリケーションの認証:passport.session()ミドルウェア徹底解説

Node. jsのWebアプリケーション開発において、認証機能はセキュリティとユーザー管理にとって不可欠な要素です。Passport. jsは、様々な認証戦略を容易に実装するためのライブラリとして広く利用されています。この解説では、Passport...


初心者でも安心!Webpack Dev Serverを使ってReactJSアプリケーションを開発・公開する

Webpack Dev Serverは、開発中にReactJSアプリケーションを簡単に実行できるツールです。デフォルトではポート8080で実行されますが、ポート80と0. 0.0.0で実行することで、インターネット上の他のユーザーからアクセスできるように公開できます。...


create-react-app 4.0.1以降が動作しない問題:原因と解決策

2020年11月下旬頃から、create-react-app 4.0.1以降でプロジェクトを作成しようとすると、以下のエラーが発生するケースが報告されています。原因この問題は、create-react-app 及び react-scripts のバージョン 4.0.0 と TypeScript 4.1.0 以降が組み合わさることで発生するバグが原因でした。現在は修正済みですが、当時は以下の状況で問題が発生していました。...


SQL SQL SQL SQL Amazon で見る



npm install grunt --save-dev コマンドを徹底解説!開発用依存関係の意味とは?

npm は Node. js パッケージマネージャーの略称で、Node. js プロジェクトで使用されるライブラリやツールをインストール、管理するために使用されます。Grunt は JavaScript タスクランナーで、JavaScript プロジェクトの自動化を目的としたツールです。タスクの自動化により、開発者はコードのコンパイル、テスト、圧縮、デプロイなどの作業を効率的に実行できます。


npm install の --save オプションを使いこなして、プロジェクトを効率的に管理しよう!

npm install コマンドでパッケージをインストールする際、--save オプションを指定すると、インストールされたパッケージが package. json ファイルの dependencies プロパティに自動的に追加されます。メリット


型定義ファイルの配置場所を理解しよう!dependencies、devDependencies、peerDependencies、typeRootsの違いを解説

TypeScriptプロジェクトでpackage. jsonファイルを作成する際、@types/*のような型定義ファイルの配置に悩む場合があります。このドキュメントでは、dependenciesとdevDependenciesそれぞれの役割と、型定義ファイルをどちらに配置すべきかを判断するための指針について解説します。