Traffine I/O

日本語

2022-02-11

npm

npmとは

npmは、JavaScript開発の世界で基本的なツールであり、Node.jsパッケージマネージャーの略称です。最初はNode.jsライブラリの管理のために設計されましたが、JavaScriptプロジェクトを管理するための事実上の標準として進化しました。

npmは、パッケージのインストール、バージョン管理、依存関係の管理を支援するコマンドラインユーティリティとして機能し、JavaScriptパッケージが格納され共有されるリポジトリとしてオンラインデータベースとしても機能します。

npmを使用することで、コードの共有や再利用のプロセスが簡素化されます。再利用可能なコンポーネントを使用してプロジェクトをブロックのように組み立てることができ、これにより開発プロセスが大幅に加速し、生産性が向上します。

npmのインストール

npmはNode.jsと一緒に配布されているため、Node.jsをダウンロードしてインストールすると、自動的にコンピュータにnpmがインストールされます。

npmの動作

npmを使用してパッケージをインストールすると、レジストリと通信してデータベース内のパッケージを検索し、取得し、プロジェクトに保存します。これらのパッケージは、現在のプロジェクトの依存関係やその他のメタデータを追跡するためのマニフェストであるpackage.jsonファイルに保存されます。

node_modulesディレクトリは、npmがプロジェクトの依存関係をインストールする場所です。npm installを実行すると、このディレクトリが存在しない場合は自動的に作成され、パッケージがそこにインストールされます。

npm install [パッケージ名]を実行すると、npmはnpmレジストリに接続し、パッケージを取得し、node_modulesフォルダに配置します。

一般的なnpmコマンド

npmには、パッケージ管理を支援する様々なコマンドが用意されています。この章では、日々の開発で使用するもっとも一般的で便利なコマンドのうちいくつかを説明します。

  • npm init
    このコマンドは、プロジェクトディレクトリに新しいpackage.jsonファイルを作成するために使用されます。プロジェクト名、バージョン、説明などの情報を入力するように求められます。デフォルト値を使用して素早くpackage.jsonファイルを生成したい場合は、-yまたは--yesフラグを使用できます。(例: npm init -y

  • npm install(またはnpm i
    これはおそらくもっとも頻繁に使用されるnpmコマンドです。パッケージをプロジェクトにインストールするために使用されます。パッケージ名をnpm install <パッケージ名>のように指定できます。パッケージ名を指定せずにnpm installを実行すると、package.jsonファイルにリストされた全ての依存関係がインストールされます。

  • npm uninstall
    このコマンドは、プロジェクトからパッケージを削除します。また、package.jsonpackage-lock.jsonファイルを更新します。(使用法: npm uninstall <パッケージ名>

  • npm update
    このコマンドは、package.jsonファイルで定義されたセマンティックバージョニング範囲に従って、パッケージを最新バージョンに更新します。特定のパッケージを更新する場合は、パッケージ名を指定できます。(npm update <パッケージ名>

  • npm list
    このコマンドは、プロジェクトの依存関係ツリーを表示し、全てのインストールされたパッケージとそのバージョンを表示します。特定のパッケージの依存関係を表示するには、npm list <パッケージ名>を使用します。

  • npm run
    このコマンドは、package.jsonファイルで定義されたスクリプトを実行するために使用されます。例えば、package.jsonファイルに"test" という名前のスクリプトがある場合、npm run testで実行できます。

  • npm publish
    自分でパッケージを作成し、共有したい場合は、npm publishを使用してパッケージをnpmレジストリに公開できます。

  • npm version
    このコマンドは、セマンティックバージョニングルールに従ってパッケージのバージョンを更新するのに役立ちます。npm version patchを使用してパッチバージョンを増やし、マイナーバージョンの場合はnpm version minor、メジャーバージョンの場合はnpm version majorを使用できます。

package.json および package-lock.json

この章では、npmベースのプロジェクトで重要な2つのファイル、package.jsonおよびpackage-lock.jsonについて説明します。これらのファイルは、プロジェクトを定義し、その依存関係を管理するために重要な役割を果たします。

package.json

package.jsonファイルは、プロジェクトに関するメタデータを含むマニフェストファイルです。これはアプリケーションのロードマップであり、プロジェクト名、バージョン、説明、著者、ライセンスなどの情報が含まれます。また、プロジェクトの依存関係もリストされており、誰でも単一のnpm installコマンドで必要な全てのパッケージをインストールできます。

以下は、package.jsonファイルの簡略化された例です。

package.json
{
  "name": "my-awesome-project",
  "version": "1.0.0",
  "description": "This is my awesome project",
  "main": "index.js",
  "scripts": {
    "start": "node index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Your Name",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.1"
  }
}

この例では、scriptsセクションでnpm runコマンドで実行できるタスクを定義しています。dependenciesセクションでは、プロジェクトが実行するために必要な全てのパッケージがリストされています。この場合、プロジェクトには1つの依存関係、expressパッケージがあります。

package-lock.json

package-lock.jsonファイルは、npmがnode_modulesツリーまたはpackage.jsonファイルを変更する操作の場合に自動的に生成されます。生成された正確なツリーを記述し、その後のインストールが中間の依存関係の更新に関係なく同一のツリーを生成できるようにします。

package-lock.jsonファイルは、プロジェクトの依存関係が全ての環境で同じままであることを確認するために重要です。全てのプロジェクトの依存関係とその正確なバージョン、その依存関係のバージョンなどがリストされています。

package.jsonファイルは手動で編集できますが、package-lock.jsonファイルを直接編集してはいけません。npmによって常に生成および更新する必要があります。

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!