package.jsonにスクリプトを追加する
JavaScriptでpackage.jsonにカスタムスクリプトを追加する方法
package.json ファイルは、Node.js プロジェクトのメタデータや依存関係を定義するファイルです。このファイルにカスタムスクリプトを追加することで、プロジェクトのビルド、テスト、デプロイなどのタスクを自動化することができます。
手順
package.json ファイルの編集
- プロジェクトのルートディレクトリにある
package.json
ファイルを開きます。
- プロジェクトのルートディレクトリにある
スクリプトの定義
scripts
オブジェクト内に、実行したいスクリプトの名前とコマンドを定義します。- 例えば、
build
という名前のスクリプトでbuild.js
ファイルを実行する場合は、次のように書きます。
{ "scripts": { "build": "node build.js" } }
- ここで、
node
は Node.js の実行コマンド、build.js
は実行する JavaScript ファイルの名前です。
- ターミナルまたはコマンドプロンプトでプロジェクトのルートディレクトリに移動します。
- 次のコマンドを実行してスクリプトを実行します。
npm run build
- これは、
package.json
のscripts
オブジェクトで定義されたbuild
スクリプトを実行します。
例
{
"name": "my-project",
"version": "1.0.0",
"description": "My awesome project",
"main": "index.js",
"scripts": {
"start": "node index.js",
"build": "webpack --mode production",
"test": "jest"
},
"author": "Your Name",
"license": "ISC",
"dependencies": {
// ...
},
"devDependencies": {
// ...
}
}
この例では、start
スクリプトで index.js
ファイルを実行し、build
スクリプトで Webpack を使ってビルドを実行し、test
スクリプトで Jest を使ってテストを実行します。
package.json
のscripts
オブジェクトは、プロジェクトの開発ワークフローを効率化するために非常に便利な機能です。npm run
コマンドを使ってスクリプトを実行するだけでなく、npx
コマンドを使うこともできます。- スクリプトのコマンドは、任意のシェルコマンドや Node.js のモジュールを実行することができます。
- カスタムスクリプトには任意の名前を付けることができます。
package.json にカスタムスクリプトを追加して JavaScript ファイルを実行する
{
"name": "my-project",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "node index.js",
"build": "webpack --mode production",
"test": "jest",
"lint": "eslint .",
"format": "prettier --write ."
},
"author": "",
"license": "ISC",
"dependencies": {
// ...
},
"devDependencies": {
// ...
}
}
各スクリプトの説明
- format
Prettier を使ってコードのフォーマットを整えます。 - lint
ESLint を使ってコードのスタイルチェックを行います。 - test
Jest を使ってテストを実行します。 - build
Webpack を使ってプロジェクトをビルドします。--mode production
オプションは、本番環境向けの最適化を行います。 - start
プロジェクトのメインとなる JavaScript ファイル (この例ではindex.js
) を実行します。
ターミナルでプロジェクトのルートディレクトリに移動し、以下のコマンドを実行します。
npm run build
詳細な解説
- オプション
各ツールに固有のオプションを指定できます (例:--mode production
)。 - webpack, jest, eslint, prettier
各ツールの実行コマンドです。 - node
Node.js の実行コマンドです。 - スクリプトのコマンド
実行したいコマンドを記述します。 - スクリプト名
任意の名前を付けることができます (例:start
,build
,test
など)。 - scripts オブジェクト
カスタムスクリプトを定義するオブジェクトです。
- 環境変数
process.env
オブジェクトを使って環境変数にアクセスできます。 - スクリプトの連鎖
&&
を使って複数のスクリプトを順に実行できます。 - npx コマンド
ローカルにインストールされていないコマンドを実行するコマンドです。 - npm run コマンド
package.json
のscripts
オブジェクトで定義されたスクリプトを実行するコマンドです。
package.json にカスタムスクリプトを追加することで、開発ワークフローを効率化することができます。様々なツールを組み合わせて、ビルド、テスト、デプロイなどの作業を自動化できます。
より詳細な情報を知りたい場合は、以下のキーワードで検索してみてください。
- Prettier
- ESLint
- Jest
- Webpack
- Node.js
- npm scripts
- package.json
さらに詳しく知りたい方へ
- 各ツールのドキュメント
Webpack, Jest, ESLint, Prettier などの公式ドキュメントを参照してください。
package.json にカスタムスクリプトを追加する代替方法
package.json の scripts フィールド以外でのスクリプト実行
package.json の scripts
フィールドは、Node.js プロジェクトにおいてカスタムスクリプトを定義する最も一般的な方法ですが、他にもいくつかの方法があります。
npm-scripts の代わりに npx を使う
- デメリット
- メリット
- ローカルにインストールされていないパッケージのスクリプトを直接実行できる。
package.json
にスクリプトを定義する必要がない。
npx eslint .
シェルススクリプトを作成する
- デメリット
- シェルスクリプトの知識が必要。
- メリット
- より複雑な処理を記述できる。
- バッチ処理や繰り返し処理など、柔軟な制御が可能。
# build.sh
#!/bin/bash
webpack --mode production
# package.json
"scripts": {
"build": "./build.sh"
}
タスクランナーを使う
- デメリット
- 学習コストが高い。
- プロジェクトの構成が複雑になる可能性がある。
- メリット
- 複雑なタスクの管理が容易。
- プラグインによって機能を拡張できる。
よく使われるタスクランナー
- Grunt
ファイルベースでタスクを定義する。 - Gulp
ストリームベースでタスクを定義する。
package.json の scripts
フィールド以外に、npx、シェルススクリプト、タスクランナーなど、様々な方法でカスタムスクリプトを実行することができます。どの方法を選ぶかは、プロジェクトの規模、複雑さ、チームのスキルセットによって異なります。
どの方法を選ぶべきか
- チームで開発
タスクランナーを使うことで、チームメンバー間でタスクの定義を統一できる。 - 複雑なスクリプト
シェルススクリプトまたはタスクランナーが適している。 - シンプルなスクリプト
npm scripts
またはnpx
が適している。
具体的な選択のポイント
- 既存のプロジェクトとの連携
既存のプロジェクトで利用されているツールに合わせて選ぶ。 - チームのスキルセット
チームメンバーのスキルセットに合わせてツールを選ぶ。 - タスクの複雑さ
複雑なタスクを管理したい場合は、タスクランナーが適している。 - プロジェクトの規模
小規模なプロジェクトであればnpm scripts
で十分な場合が多い。
- タスクランナーの選び方
- Gulp はストリームベースで処理するため、高速で柔軟な処理が可能。
- Grunt はファイルベースで処理するため、比較的シンプルにタスクを定義できる。
- npm-scripts と npx の違い
- npm-scripts は
package.json
に定義されたスクリプトを実行する。
- npm-scripts は
javascript node.js package.json