プログラマーノート

プログラマーの学習や雑記のメモです

npmとcomposerの比較

はじめに

こんにちは。エンジニアの仕事をしている、たかふみです。

本日は、npmcomposerの比較を行いたいと思います。

WEB系エンジニアで、サーバーからフロントまで一貫して作業していると、

npmと、composerの使い方について、どっちがどうだったか迷ってしまう時ないでしょうか。

わかりやすいよう、まとめます。

パッケージ管理ツールとは

プログラミング言語の多くにはパッケージ管理ツールが存在します。

Pythonはpip、Rubyはgem、PerlはCPAN、golangはglide などがあります。

パッケージ管理ツールを使うことで、依存しているライブラリの管理や、

ライブラリのアップデートを容易に行えます。

また、管理されているパッケージは、git管理外に設定することができ

リポジトリにコードを減らすことができます。

今回は PHP で使うComposerと、JavaScriptで使うnpmの比較をしたいと思います。

npmとは

javascriptのパッケージ管理ツールです。

Node.jsをインストールすると、ついてきます。

正確に言えば、javascriptというよりもNode.jsのパッケージ管理ツールですが

JavaScriptのほうが使う機会が多いので、JavaScriptのパッケージ管理ツールという印象が強いです。

composerとは

PHPのパッケージ管理ツールです。

ただ単にパッケージをインストールするだけではなく、

クラスのオートロード機能も付いています。

機能の比較

では、composernpmの機能の違いについて

比較し、並べていきたいと思います。

プロジェクト新規作成

npmcomposerも、同じinitです。
npmpacage.jsoncomposerは、composer.jsonを生成します。

npm init
composer init

ロックファイル

npmが、package-lock.jsonです。

composerが、composer.lockです。

これら2つのファイルは、2つとも、ロックファイルであり、

パッケージをインストールする時に、依存するライブラリ関係が明記されていたりします。

git clone後の初期パッケージインストール

gitをcloneした後、新たにパッケージを新規インストールする際に使用します。

2つとも、同じinstallですね。

npm install
composer install

# Laravelなど、フレームワークにパッケージ初期作成用のコマンドが存在する場合がある
composer create-project --prefer-dist laravel/laravel

パッケージ追加

続いて、パッケージの新規追加のコマンドです。

composerは、vendorという概念があるのが、npmと違いますね。

npmは、新規追加と、初期設定のコマンドが変わらないことが特徴ですね。

npm install パッケージ名
composer require ベンダー名/パッケージ名

パッケージ追加(開発のみ)

続いて、開発時のみインストールするパッケージのコマンドです。

npmも、composerも、オプションをつければ可能です。

npm install --save-dev
composer require --dev ベンダー名/パッケージ名

パッケージ追加(グローバルインストール)

各プロジェクトではなく、システム全体にパッケージをインストールする際は

以下のコマンドを打ちます。

npm install -g パッケージ名
composer global require ベンダー名/パッケージ名

パッケージがインストールされるディレクトリ

npm install や、composer installを実行すると パッケージがインストールされるディレクトリは以下になります。

npm: node_modules
composer: vendor

パッケージ更新

composer.lockや、package-lock.jsonが更新され、

パッケージが全て最新版になります。

全てパッケージを最新に更新すると、影響範囲が広すぎるので

使う機会は無いですね。

npm update
composer update

パッケージ一覧

インストールしたパッケージ一覧が出力されます。

npm list
composer show

パッケージ削除

パッケージ削除コマンドです。

npm uninstall パッケージ
npm unlink パッケージ
npm remove パッケージ
composer remove パッケージ

スクリプト実行

スクリプト実行コマンドです

npmは、ビルドの実行やテストコードの実行、

composerは、phpunitの実行によく使われます

npm run スクリプト名
composer  スクリプト名

表にします

一覧にして整理します

npm composer
プロジェクト新規作成 npm init composer init
ロックファイル package-lock.json composer.lock
初期パッケージインストール npm install composer install
パッケージ追加 npm install パッケージ名 composer require ベンダー名/パッケージ名
開発のみインストール npm install --save-dev composer require --dev
グローバルインストール npm install -g パッケージ名 composer global require ベンダー名/パッケージ名
インストールディレクトリ node_modules vendor
パッケージ更新 npm update composer update
パッケージ一覧 npm list composer show
パッケージ削除 npm uninstall composer remove
スクリプト実行 npm run スクリプト名 composer スクリプト名

まとめ

いかがでしたでしょうか 。
composernpmのコマンドが、どっちがどうだったか混乱しがちだったので、まとめました。 皆様の開発のお役に立てたら光栄です。読んで頂いてありがとうございました。