1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

composerについて ~なぜ、サーバーでパッケージを追加してはダメなのか

Posted at

はじめに

composer installcomposer requireの違いから、なぜ、サーバーでパッケージを追加してはダメかについてまとめました。(自分の理解のために言語化したものです。ご指摘ありましたらコメント等で教えていただけますと幸いです)

環境

  • Laravel8

参考にした記事

Composerとは

Composerとは、PHPのパッケージ・ライブラリ管理ツールです。

composer.lockファイルとは

実際にダウンロードされたパッケージの情報が記録されるファイルです。バージョン名を記録されています。

composer.jsonファイルとは

プロジェクトの依存関係を記述したファイルで、導入したパッケージ等が記述されています。

composer installについて

最初にcomposer installをしたとき、composer.jsonファイルを参照してパッケージやライブラリがvendorディレクトリ配下にまとめてインストールされます。
この時、同時にcomposer.lockファイルが生成されます。composer install時に参照したパッケージやパッケージのバージョン情報がcomposer.lockに書き込まれます。
そして、二回目以降はcomposer installをしたときには、composer.lockファイルを参照します。
つまり、composer.lockファイルがある場合は、composer installしても、パッケージの追加やバージョン情報とかが書き換わることがないのです。

チーム開発するときは、composer.lockファイルをGit管理してチーム間で共有すれば、チームでバージョン等を統一した状態で必要なパッケージをアプリにインストールすることができます。
(逆に、composer update(composer.jsonに記録されているパッケージを最新バージョンにアップデート、composer.lockファイルも更新)やcomposer require(パッケージを追加)をチームメンバーが各自で行ってしまうとチーム内でバージョンが異なってしまい、不具合が発生する元となります、、、!)

なぜサーバーでパッケージを追加してはダメなのか

上記にて説明した通り、サーバーでcomposer requirecomposer updateを行い、パッケージの追加・アップデートを行ってしまうとローカル環境とパッケージのバージョンが変わってしまう場合があります。不具合が発生してしまいますね、、、

おわりに

composer installcomposer requireの違いが分からず、サーバーでパッケージを追加しようとしたり、各メンバーにcomposer requireをするよう促したりしてしまっていました(恐ろしい、、、)自分が何をやっているのかを理解して実行することが大切だと痛感しました。

おまけ

npmも同様な考え方とのことです!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?