Node.js は、オープンソースのクロスプラットフォームJavaScriptランタイム環境です。ここ数年、高速な入出力(I/O)パフォーマンスと比類のない JavaScript構文 により、バックエンドのWeb開発で人気の選択肢となっています。また、その適応性の高さにより迅速なカスタマイズが可能になり、このサーバー技術は競合他社から際立っています。
Node.jsパッケージマネージャー — 概要
Node.js Package Managerまたはnpm はJavaScriptのデフォルトのパッケージマネージャーです。 Npm は、プロジェクトスクリプトをインストールし、Node.js プロジェクトで外部モジュールを操作するために頻繁に使用されます。さらに、プロジェクトのディレクトリにある package.json ファイルを使用して、プロジェクトにインストールされているモジュールを追跡します。 Npm は以下の情報を保存および記録します:
- プロジェクトに必要なモジュールと、インストールされているバージョン(存在する場合)。
- 著者やライセンスなどの詳細を含む、プロジェクトのメタデータ記述。
- プロジェクト関連または目標指向のタスクを自動化するための実行可能スクリプト。
このチュートリアルでは、Node.jsモジュールをnpmおよび package.jsonと組み合わせて使用する手順を説明します。.
始めましょう!
前提条件
このチュートリアルを進めるには、以下が必要です。
- Node.js がシステムにインストールされている必要があります。
- 手順に従って、Ubuntu 18.04にNode.jsをインストール
-
システムにインストールされた最新バージョンのUbuntuがインストールされていること。
ステップ1:package.jsonファイルの作成
Node.jsの locator モジュールを使用したダミープロジェクトを例にして、チュートリアルを開始しましょう。このプロジェクトは、ユーザーのIPアドレスを収集し、ユーザーの出身国を出力として共有することを目的としています。ここでは、Node.js モジュールと npm の使用方法を理解することに焦点を当てているため、モジュールを手動で作成する必要はありません。代わりに、プロジェクトにあらかじめインストールされているカスタマイズ可能なパッケージを使用します。
JSON または JavaScript Object Notation(JavaScript Object Notation)は、データの共有や送信に使用される標準的なフォーマットです。最初に、ソフトウェアの依存関係を保存および管理するJSON ファイルを作成します。ただし、手動で package.json を作成するのは骨が折れ、時間がかかります。簡単にするために、init コマンドを使用して package.json ファイルを作成します。これにより、JSON をゼロから作成するために余分なコードブロックを書く手間を省きます。
-
init コマンド
まず、 mkdir コマンドを使用して新しいフォルダを作成し、名前を locator:
|
1 |
mkdir locator |
次に、 cd コマンドを使用して、新しく作成したフォルダに移動します:
|
1 |
cd locator |
次に、 ENTER npm を実行して対話型プロンプトを初期化します:
|
1 |
npm init |
その後、以下の出力が表示されます:

1. name
新しいプロジェクトの name(現在のフォルダ)に案内されます。括弧内にはデフォルト値が表示されます()。このチュートリアルをシンプルで分かりやすくするために、デフォルトのオプションのまま進めます。 ENTER を押して受け入れ、続行します。
2. version
次の値は version 名であり、プロジェクトをnpm パッケージリポジトリで共有する場合の重要な要件です。
|
Note: Node.jsパッケージはSemantic Versioning (semver)ガイドに従います。 First number: The MAJOR バージョン。APIが変更された場合にのみ変更されます。 Second Number: The MINOR バージョン。機能が追加されたときに変更されます。 Last number: The PATCH バージョン。エラーやバグが解決されたときに変更されます。 |
3. description
The description は、Node.jsモジュールの動作プロセスを説明する情報文字列です。このデモでは、 locator プロジェクトはユーザーのIPアドレスを取得し、出身国を返します。
|
Note: ほとんどの場合、モジュールにはエントリーポイントとして index.js ファイルがあります。これは、npmモジュールの入り口となる main プロパティでもあります。 package.json。ただし、 package.json が見つからない場合、 Node.js は自動的に index.js をロードします。 |
4. test command
これは、プロジェクトのテストを実行するための実行可能スクリプトまたはコマンドです。テストはこのチュートリアルの範囲外であるため、スキップして ENTER.
5. init command
The init コマンドは、プロジェクトのGitHub Repositoryを求めます。ここでも、この部分をスキップして続行しましょう。
6. keywords
キーワード は、リポジトリを検索するために使用される文字列の配列です。プロジェクトにシームレスに追跡できるように、キーワードを正確かつ関連性の高いものに保つことをお勧めします。
これらの keywords を文字列としてリストし、カンマで区切ります。私たちのプロジェクトでは、プロンプトで ip, country, latitude、および longitude と入力すると、これらがキーワードとして package.json.
7. author
Treat the author フィールドは、フィードバックやユーザーとの対話方法として扱ってください。たとえば、ユーザーがモジュール内のエラーを検出した場合、このフィールドを使用してあなたに通知し、エラーに対処してもらうことができます。
-
フォーマット: "名前 \<メールアドレス\> (ウェブサイト)".
-
デモ: "Paul\<paul@your_domain\> (https://your_domain)"
-
メールアドレスとウェブサイトのデータの追加は任意です。ただし、有効な作成者を指定し、連絡先情報を author として追加することができます。詳細を確認し、 ENTER.
8. license
The license フィールドは、ユーザーがモジュールを使用する際に知っておくべき法的利用規約を示しています。As Node.js モジュールはオープンソースであるため、npm は自動的にこれを ISC-license に設定します。
オープンソースライセンスのページに移動し、ニーズに最も適した Open Source Initiative を選択してください。リポジトリにライセンスが必要ない場合は、プロンプトで UNLICENSED と入力します。このチュートリアルでは、デフォルトの ISC ライセンスを使用します。 ENTER を押して、このプロセスを完了します。
The init コマンドは package.json ファイルを作成し、結果を表示します。

次に、 ENTER を押して続行し、 package.json ファイルを作成します。私たちの JSON ファイルは、プロジェクトにインストールするすべてのモジュールとパッケージの記録を保持します。
次のステップでは、依存関係と Node.js モジュールをインストールします。
ステップ 2: 依存関係とモジュールのインストール
カスタマイズされた外部ライブラリを作成するには時間がかかり、多大な労力が必要です。代わりに、最も効果的な方法は、定義済みの依存関係と外部ライブラリをインストールすることです。このチュートリアルでは、HTTP ライブラリを使用して、デモのロケーターモジュールが外部 API リクエストを送信して地理データを収集できるようにします。
このガイドでは、 axios ライブラリを使用して HTTP リクエストを送信します。まず、axios をインストールしましょう:
|
1 |
npm install axios --save |
まず npm パッケージをインストールし、スペースで区切ってリストします。また、プロジェクトがプロジェクトの依存関係として保存されるように、 --save タグを含めてください。
次のような出力が表示されます。

Open the package.json を、 nano またはお好みのテキストエディタを使用して開きます。
|
1 |
nano package.json |
コードブロックの下部でハイライトされている、新しく追加されたプロパティに注目してください。

-
開発依存関係のダウンロード
開発依存関係(Development dependencies)は、プロジェクトの開発で使用されるパッケージであり、プロジェクトの本番環境やメンテナンスでは使用されません。これらの依存関係は本番環境では不要に思えるかもしれませんが、コードの記述や書き直しにおいて重要な役割を果たします。
コードリンターと同様に、開発依存関係はソフトウェア開発において重要な役割を果たします。多くの場合、開発者は code linters を使用して、プロジェクト開発中のスタイリングの統一性と一貫性を維持しますが、これは本番環境では不要なものです。
プロジェクトの開発依存関係としてリンターをインストールしましょう。また、 --save-dev フラグを使用して、開発に必要な依存関係として eslint を保存します。
|
1 |
npm i eslint@6.0.0 --save-dev |
モジュールをアップデートしたときにバージョンがタグ付けされるように、依存関係に @6.0.0 を追加しました。記号 @ は、インストールしたい特定のタグを検索するように npm に通知します。ここで、再び package.json ファイルを開きます。
|
1 |
nano package.json |
次のような出力が表示されます。

- 自動生成されるファイル: node_modules および package-lock.json
最初に Node.js プロジェクトにパッケージをインストールする際、 package.json および package-lock.json ファイルが自動的に作成されます。作業ディレクトリでこれらのファイルを確認してください。
![]()
インストールされた依存関係のほとんどは node_modules フォルダ。このフォルダはバージョン管理リポジトリにコミットしないことをお勧めします。インストールされる依存関係の数が増えると、 node_modules のサイズも大きくなります。
逆に、 package-lock.json ファイルはインストールされた正確なバージョンを記録するため、 node_modules を明示的に含める必要はありません。 node_modules フォルダとは異なり、このファイルはすべての依存関係とそのバージョンを詳細に表しているため、バージョン管理リポジトリにコミットできます。
- を使用したインストールpackage.json
The package.json および package-lock.json ファイルを使用すると、プロジェクトの開発を開始する前に、同じプロジェクトの依存関係をセットアップできます。ディレクトリツリーに移動し、locatorと同じディレクトリレベルに新しいフォルダを作成します。新しいフォルダの名前を cloned_locator とします。:
|
1 2 |
cd .. mkdir cloned_locator |
次に、 cloned_locator に移動します。:
|
1 |
cd cloned_locator |
Import package.json および package-lock.json ファイルを locator から cloned_locator にインポートします。:
|
1 |
cp ../locator/package.json ../locator/package-lock.json . |
The . は現在のフォルダを意味します。次のコマンドを使用して、必要なモジュールをインストールします。
|
1 |
npm i |
最初は、npm が package-lock.json ファイルを確認してモジュールをインストールします。ロックファイルが利用できない場合は、 package.json ファイルを参照してインストール内容を決定します。
一般的に、 package-lock.json からのインストールは簡単です。ロックファイルにはモジュールとその依存関係の正確なバージョンが含まれているためです。つまり、 package.json, npm を使用してインストールする場合、互換性のある安定したバージョンを特定するために必要な余分な時間を節約できます。
次の --production タグを追加して、開発用依存関係を無視します。
|
1 |
npm i --production |
その後、locatorに戻ります。
|
1 |
cd ../locator |
- グローバルインストール
これまでは、npm モジュールをローカルにインストールしてきました。しかし、パッケージをグローバルにインストールして、シェルコマンドやCLI経由で使用するという選択肢もあります。例えば、Hexo ライブラリを使用して現在の locator プロジェクトを操作し、静的ウェブサイトを管理できます。次のコマンドに -g タグを付けて、Hexo CLI をグローバルにインストールします。
|
1 |
npm i hexo-cli -g |
|
注意: パッケージをグローバルにインストールする際にエラーが発生した場合は、次のコマンド sudo npm i hexo-cli -g を管理者権限(root)で実行してみてください。 |
パッケージが正常にインストールされたことを確認するには、次のコマンドを使用します。
|
1 |
hexo --version |
次のような出力が表示されます。

ステップ 3: モジュールの管理と更新
パッケージマネージャーの役割は、単に Node.js モジュールをインストールすることだけではありません。必要に応じて、リスト表示、更新、アンインストール、さらにはセキュリティレイヤーの追加など、多くのカスタマイズオプションが用意されています。
このセクションでは、以下の方法について説明します。
-
モジュールのリスト表示
-
モジュールの更新
-
モジュールのアンインストール
-
モジュールの監査(オーディット)
それぞれについて詳しく説明します。
-
モジュールのリスト表示
モジュールのリスト表示は、その名の通り、プロジェクトにインストールされているすべてのモジュールの詳細を表示します。 package.json ファイルを読み取る代わりに、 ls または list コマンドを使用して、プロジェクトのモジュールを詳細に確認できます。
|
1 |
npm ls |
次のような出力が表示されます。

デフォルトでは、 ls コマンドは、プロジェクトの依存関係とそれが依存するモジュールを含む依存関係ツリー全体をリスト表示します。ただし、全体を俯瞰して、特定のモジュールのみを明示的にターゲットにすることもできます。依存関係を除いて、インストールしたモジュールのみを確認するには、次のコマンドを使用します。
|
1 |
npm ls --depth 0 |
次のような出力が表示されます。

-
モジュールの更新
ソフトウェアのクラッシュや競合を避けるために、常に npm モジュールを最新の状態に保つことをお勧めします。更新が必要かどうかを確認するには、次のコマンドを使用します。
|
1 |
npm outdated |
次のような出力が表示されます。

各用語について詳しく説明します。
- Package(パッケージ): プロジェクトに現在インストールされている Package をリスト表示します。
- Current(現在): パッケージの Current バージョンを示します。
- Wanted(希望): 表示される npm におけるバージョン要件に最も適合するバージョン package.json.
- 最新: これは最新の npm リリースを示しており、必要に応じてアップデートする必要があります。
- 場所: パッケージの 場所(依存関係ツリー内)。
提案されているように、npm を安定版にアップデートできます。次のコマンドを使用して、現在のパッケージをアップデートします:
|
1 |
npm up eslint |
次のような出力が表示されます:

これらを1つずつアップデートする代わりに、 up コマンドを使用して、すべてのモジュールを一度にアップデートすることもできます:
|
1 |
npm up |
-
モジュールのアンインストール
多くの場合、依存関係が期待通りの出力を示さず、カスタマイズされた依存関係を作成する必要がある場合があります。このようなシナリオでは、 package.json および package-lock.json ファイルから依存関係をアンインストールするオプションがあります。たとえば、 axios を依存関係として持っており、満足のいく結果が得られないとします。間違いなく、このリポジトリをプロジェクトから削除することになります。 uninstall または un コマンドを使用して、 axios:
|
1 |
npm un axios |
次のような出力が表示されます:

Though the uninstall コマンドによって依存関係は削除されましたが、削除の通知は受信されませんでした。現在の依存関係の数を確認するために、依存関係をリスト表示してみましょう:
|
1 |
npm ls --depth 0 |
リストに axios の依存関係が含まれていない出力が表示されます:

-
モジュールの監査
プロジェクトにインストールされている依存関係に潜在的なセキュリティ脅威の傾向がある場合、それを検出できます。まず、監査モジュールがどのように機能するかを確認するために、古いバージョンの request モジュールをインストールする必要があります:
|
1 |
npm i request@2.60.0 |
脅威や脆弱性の修正を促す出力が表示されます:

脆弱性と脅威の詳細を展開するには、 audit コマンドを使用します:
|
1 |
npm audit |
詳細なセキュリティレポートが表示されます:

これらの脆弱性を解決するには、 fix コマンドを使用します:
|
1 |
npm audit fix |
次のような出力が表示されます:

9つの脆弱性のうち2つが修正されたことに気づいたかもしれません。しかし、残りの7つの脆弱性は依存関係に残り続けています。なぜなら、 audit fix はすべての問題を解決するわけではない(doesn’t)ためです。この問題を解決するには、別のAPIを使用して依存関係をより新しいバージョンにアップデートする必要がある場合があります。アップデートする際は、依存関係ツリーの上位にあるコードが破損する可能性があるため、注意してください。脆弱性が解消されたことを確認するには、次のコマンドを使用します:
|
1 |
npm audit fix --force |
脆弱性の脅威を解決するために別のAPIを使用する場合は注意してください。確信が持てない場合、コードの機能が破損する原因となる可能性があります。
結論
結論として、Node.js モジュールを npm および package.json とともに使用する方法を説明しました。さらに、パッケージの依存関係のリスト表示、アップデート、管理、監査、およびアンインストールの方法についても説明しました。次のステップとして、このガイドで説明した概念を使用して、ご自身でパッケージのインストールとテストを試してみることをお勧めします。また、学習をさらに深めるために、Node.jsアプリケーションの構築 や 依存関係の設定 に挑戦することもできます。
その他にも、Node.js やJavaScriptに関する多くの学習教材を、当社のブログで見つけることができます。:
- CentOS 8へのNode.jsのインストール:完全ガイド
- PostgreSQLとNode.jsアプリケーションの接続:チュートリアル
- ReactアプリケーションでのHTTPクライアントAxiosの使用:チュートリアル
- Ubuntu 20.04でDockerを使用してNode.js (Express.js) アプリをデプロイする方法
ハッピーコンピューティング!
コメント
コメントはまだありません。最初のコメントを投稿しましょう。