はじめに
こんにちは。エンジニアの仕事をしている、たかふみです。
本日は、npm
とcomposer
の比較を行いたいと思います。
WEB系エンジニアで、サーバーからフロントまで一貫して作業していると、
npm
と、composer
の使い方について、どっちがどうだったか迷ってしまう時ないでしょうか。
わかりやすいよう、まとめます。
パッケージ管理ツールとは
プログラミング言語の多くにはパッケージ管理ツールが存在します。
Pythonはpip
、Rubyはgem
、PerlはCPAN
、golangはglide
などがあります。
パッケージ管理ツールを使うことで、依存しているライブラリの管理や、
ライブラリのアップデートを容易に行えます。
また、管理されているパッケージは、git管理外に設定することができ
リポジトリにコードを減らすことができます。
今回は PHP で使うCompose
rと、JavaScriptで使うnpm
の比較をしたいと思います。
npmとは
javascriptのパッケージ管理ツールです。
Node.jsをインストールすると、ついてきます。
正確に言えば、javascriptというよりもNode.jsのパッケージ管理ツールですが
JavaScriptのほうが使う機会が多いので、JavaScriptのパッケージ管理ツールという印象が強いです。
composerとは
PHPのパッケージ管理ツールです。
ただ単にパッケージをインストールするだけではなく、
クラスのオートロード機能も付いています。
機能の比較
では、composer
とnpm
の機能の違いについて
比較し、並べていきたいと思います。
プロジェクト新規作成
npm
もcomposer
も、同じinitです。
npm
はpacage.json
、composer
は、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
パッケージ追加
続いて、パッケージの新規追加のコマンドです。
compose
rは、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 スクリプト名 |
まとめ
いかがでしたでしょうか 。
composer
とnpm
のコマンドが、どっちがどうだったか混乱しがちだったので、まとめました。
皆様の開発のお役に立てたら光栄です。読んで頂いてありがとうございました。