Linux用の3つのトップNode.jsパッケージマネージャー


Node.jsは、世界中のソフトウェア開発業界を揺るがす最も人気のあるプログラミング言語の1つです。 Node.jsアプリケーションを開発および使用しているときに、開発者や一般ユーザーが常に依存している一般的なソフトウェアの1つは、パッケージマネージャーです。

Node.jsパッケージマネージャーは、オンラインパッケージリポジトリ(Node.jsライブラリ、アプリケーション、および関連パッケージを含む)と対話し、パッケージのインストールや依存関係の管理など、さまざまな方法で役立ちます。一部のパッケージマネージャーは、プロジェクト管理コンポーネントも備えています。

たとえば、Webアプリケーションを作成していて、アプリケーション内に特定の機能を実装する無料の外部ライブラリが既にパブリックリポジトリに存在することに気付いた場合は、パッケージマネージャーを使用して、アプリケーションディレクトリのシステムにインストールして統合できます。あなたのアプリケーションでそれ。

パッケージマネージャーは、アプリケーションの依存関係としてライブラリーを指定するのにも役立ちます。これにより、アプリケーションがインストールされているシステム、ライブラリーもインストールされ、アプリケーションが正しく機能します。

この記事では、LinuxシステムにインストールできるトップのNode.jsパッケージマネージャーを確認します。

1. NPM –Node.jsパッケージマネージャー

npmはNode.jsエコシステムに導入する必要はありません。しかし、npmとは何ですか? npmは、実際には多くのものを組み合わせたものです。ノードパッケージマネージャー、npmレジストリ、npmコマンドラインクライアントです。

まず、npmはクロスプラットフォームのNode.jsパッケージマネージャーであり、JavaScript開発者がコードをパッケージの形で簡単に共有できるようにするために開発されました。パッケージをインストールして公開するために、開発者はnpmと呼ばれるコマンドラインクライアントを使用します。これは、バージョン管理と依存関係管理にも使用されます。 Linuxやその他のUNIXライクなシステム、Windows、macOSで動作します。

さらに、npmは、ライブラリやアプリケーションなどのオープンソースのNode.jsプロジェクトを公開するための安全なオンラインリポジトリでもあります。これは、Web上で最も人気があり最大のオープンソースソフトウェアレジストリの1つです。これは無料で使用できます。これにより、パブリックパッケージの作成、更新の公開、依存関係の監査などを行うことができます。

または、npm Proにサインアップして、プライベートリポジトリなどの多くの利点を備えたプレミアム開発エクスペリエンスを楽しむこともできます。ビジネスクリティカルなプロジェクトに取り組んでいる大規模な開発チームは、npm Enterpriseを選択できます。これにより、公開されていないパッケージを内部で開発できます。

npmコマンドラインクライアントはNode.jsパッケージとともに配布されます。つまり、LinuxシステムにNode.jsをインストールすると、npmも自動的にインストールされます。興味深いことに、npmは、以下で説明する他のすべてのNode.jsパッケージマネージャーをインストールするために使用されます。

npmはJavaScriptセキュリティもサポートし、npmをCI/CD(継続的インテグレーション/継続的デリバリー)システムなどのサードパーティツールと統合します。

Linuxシステムに最新バージョンのNode.jsとNPMをインストールするには、それぞれのLinuxディストリビューションのコマンドに従います。

$ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
$ sudo apt-get install -y nodejs
# curl -sL https://rpm.nodesource.com/setup_14.x | bash -
# yum -y install nodejs
Or
# dnf -y install nodejs

2.ヤーン–Node.jsパッケージマネージャー

Yarnは、高速で安全、信頼性の高いオープンソースのパッケージマネージャーであるだけでなく、安定した再現可能なプロジェクトのプロジェクトマネージャーでもあります。 Yarnは、Linux、Windows、macOS、およびNode.jsをサポートするその他のUNIXライクなオペレーティングシステムなど、あらゆる場所で機能します。

パッケージマネージャーとして、パッケージを通じて世界中の他の開発者とコードを共有することができます。同様に、アプリケーションで他の開発者のコードを使用することもできます。

Yarnは、プロジェクトを単一のリポジトリ内に格納されているサブコンポーネントに分割できるようにすることで、小規模、中規模、大規模のモノリポジトリプロジェクトのワークスペースをサポートします。 Yarnのもう1つの重要な機能は、ネットワークがダウンしている場合でも正常に機能できるオフラインキャッシュです。

Yarnには、プラグインを介して拡張できるモジュラーAPIも付属しています。公式プラグインを使用することも、独自のプラグインを作成することもできます。プラグインを使用して、新しい機能、新しいリゾルバー、新しいリンカー、新しいコマンドを追加したり、一部のイベントに登録したり、相互に統合したりできます。さらに、実行時に依存関係ツリーをイントロスペクトできるプラグアンドプレイ(PnP)APIを備えています。

さらに、Yarnも十分に文書化されており、制約、リリースワークフロー、機能というよりも哲学である「ゼロインストール」など、その機能の一部はまだインキュベーション中です。

Linuxシステムに最新バージョンのYarnをインストールするには、最初にNode.jsをシステムにインストールしてから、次のコマンドを使用してそれぞれのLinuxディストリビューションにYarnをインストールする必要があります。

$ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
$ echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
$ sudo apt update
$ sudo apt install yarn
# curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
# rpm --import https://dl.yarnpkg.com/rpm/pubkey.gpg
# yum install yarn
OR
# dnf install yarn

3. Pnpm –Node.jsパッケージマネージャー

pnpmは、高速でディスクスペース効率の高いオープンソースのパッケージマネージャーです。クロスプラットフォームであり、Linux、Windows、およびmacOSで動作します。フラットnode_modulesディレクトリを作成するnpmやyarnとは異なり、pnpmの動作は少し異なります。シンボリックリンクを使用して依存関係のネストされた構造を作成する非フラットnode_modulesレイアウトを作成します。

node_modules内のファイルは、単一のコンテンツアドレス可能なストレージからリンクされています。このアプローチは効率的であり、ギガバイトのディスクスペースを節約できます。

非フラットnode_modulesアプローチは、依存関係の管理に関してもpnpmを厳密にし、パッケージがpackage.jsonファイルで指定された依存関係にのみアクセスできるようにします。また、ワークスペースのサポートが組み込まれているため、ワークスペースを作成して、単一のリポジトリ内で複数のプロジェクトを統合できます。

重要なことに、pnpmは、Travis、Semaphore、AppVeypr、SailCIなどのさまざまなCIアプリケーションで簡単に使用できます。また、他のユーザーがpnpmのみを使用でき、上記の他のNode.jsパッケージマネージャーは使用できないようにプロジェクトを構成できます。たとえば、誰かが「npminstall」または「yarninstall」を実行しようとした場合などです。

pnpmは、カスタム名、コマンドラインタブ補完を使用してパッケージをインストールできるエイリアスもサポートしており、pnpm-lock.yamlというロックファイルを使用します。

pnpmをインストールする最も簡単な方法は、示されているようにnpmパッケージマネージャーを使用することです。

$ sudo npm install -g pnpm
# npm install -g pnpm

この記事では、Linuxにインストールできる上位のNode.jsパッケージマネージャーについて説明しました。この記事についてのご意見をお聞かせください。以下のフィードバックフォームからご意見をお聞かせください。