[解決済み】Composerのdevelop/productionスイッチで正しくデプロイする方法とは?
質問
Composerには、開発中にのみいくつかの依存関係をロードするオプションがあり、本番環境(ライブサーバー)にはそのツールはインストールされません。これは、テスト、フェイクデータツール、デバッガなど、開発中にしか意味をなさないスクリプトに(理論的には)非常に便利です。
方法としては
require-dev
ブロックに、devで必要なツールを入れています。
"require-dev": {
"codeception/codeception": "1.6.0.3"
}
を使用して、これらの依存関係をロードします。
composer install --dev
問題点 &; 質問
Composer は
install
と
update
は、2013年に劇的に変化しました。
require-dev
-dependenciesがデフォルトでインストールされるようになりました(!)、自由にcomposer.jsonに
require-dev
ブロックを作成し
composer install
を再現する。
デプロイの方法として最も一般的なのは、コンポーザーをプッシュすることであるため。
ロック
(現在のコンポーザー設定を保持する)そして、その後に
composer install
を本番サーバーにインストールすると、開発用のものもインストールされます。
このような場合、どのようにデプロイするのが正しいのでしょうか? を使用せずに をインストールする必要がありますか?
<サブ 注:ここでは、奇妙なComposerのデプロイメントを明確にするために、正規のQ/Aを作成しようとしています。この質問を編集するのはご自由にどうぞ。
解決方法を教えてください。
なぜ
IMHO では、Composer が
--dev
フラグをデフォルトで使用します(インストール時
と
の更新)を行うようになりました。Composerは、このような動作が望まれるシナリオで実行されることがほとんどです。
Composerの基本的なワークフローは以下の通りです。
-
新しいプロジェクトを開始します。
composer.phar install --dev
, json と lock ファイルが VCS にコミットされます。 -
他の開発者がプロジェクトで作業を開始:VCSのチェックアウトと
composer.phar install --dev
. -
開発者が依存関係を追加する。
composer.phar require <package>
を追加します。--dev
のパッケージが必要な場合はrequire-dev
セクションを作成します (そしてコミットします)。 -
その他は合わせて。(チェックアウトと)
composer.phar install --dev
. -
開発者が、より新しいバージョンの依存関係を求めている。
composer.phar update --dev <package>
(とコミットする)。 -
他の人も一緒に行く。(チェックアウトと)
composer.phar install --dev
. -
プロジェクトがデプロイされました。
composer.phar install --no-dev
ご覧のように
--dev
フラグの方が
--no-dev
フラグは、特にプロジェクトに携わる開発者の数が増えてきたときに有効です。
本番デプロイ
dev"依存関係をインストールせずにこれをデプロイする正しい方法は何ですか?
さて、その
composer.json
と
composer.lock
ファイルをVCSにコミットする必要があります。を省略してはいけません。
composer.lock
なぜなら、そこには使用すべきパッケージのバージョンに関する重要な情報が含まれているからです。
本番環境でのデプロイ時に
--no-dev
フラグをComposerに渡します。
composer.phar install --no-dev
は
composer.lock
ファイルには、dev-packages に関する情報が含まれている可能性があります。これは重要ではありません。その
--no-dev
フラグは、それらの開発パッケージがインストールされないようにします。
私がquot;production deploy"と言ったのは、productionで使用されることを目的としたdeployを意味します。を使うかどうかを議論しているのではありません。
composer.phar install
は本番サーバーで行うべきか、それともレビューが可能なステージングサーバーで行うべきでしょうか?それは、この回答の範囲ではありません。私が言いたいのは、単に
composer.phar install
dev"の依存関係をインストールすることなく、quot;dev"をインストールすることができます。
オフトピック
は
--optimize-autoloader
フラグを使用すると、クラスマップを生成してアプリケーションのオートロードを高速化することができます。
composer.phar install --no-dev --optimize-autoloader
または自動デプロイされたとき。
composer.phar install --no-ansi --no-dev --no-interaction --no-plugins --no-progress --no-scripts --optimize-autoloader
コードベースがそれをサポートしている場合、以下のように置き換えることができます。
--optimize-autoloader
に対して
--classmap-authoritative
. 詳細はこちら
こちら
関連
-
[解決済み】Notice: 非オブジェクトのプロパティを取得しようとしているエラー
-
[解決済み] コマンドの同期がとれていない。
-
[解決済み】新しいPHPMailerはPHPMailerAutoload.phpが必要?
-
[解決済み】XAMPPエラー: www.example.com:443:0 サーバー証明書に、サーバー名と一致するIDが含まれていません。
-
[解決済み】未定義のメソッド mysqli_stmt::get_result を呼び出す。
-
[解決済み】PHP フェイタルエラー。未定義の関数mssql_connect()をコールしています。
-
[解決済み] 警告:mysqli_fetch_array()は、パラメータ1がmysqli_resultであることを期待する、オブジェクトはで指定された。
-
[解決済み】file_get_contents( )が動作しない。
-
[解決済み] SSLエラー SSL3_GET_SERVER_CERTIFICATE:証明書の検証に失敗しました。
-
[解決済み] 致命的なエラーです。mysqli_result 型のオブジェクトを使用できません [終了] 。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】move_uploaded_fileは、「failed to open stream: Permission denied" というエラーが出る
-
[解決済み】mysqli_result クラスのオブジェクトを文字列に変換できない
-
[解決済み】ディレクトリ内のファイル数を数える PHP
-
[解決済み】警告:mysql_fetch_array()はパラメータ1がリソースであることを期待、ブール値は[重複]で与えられる]
-
[解決済み】PHP フェイタルエラー。未定義の関数mssql_connect()をコールしています。
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み】Fatal error: mysqli_result 型のオブジェクトは使用できません [終了] 。
-
[解決済み】Wordpressの子テーマのstyle.cssが効かない。
-
[解決済み] PHPの配列を別の配列にコピーする関数はありますか?
-
[解決済み] $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて