PHP laravelローカルdevの設定


複数のバックエンド開発者とより多くの進行中のプロジェクトを持っている会社から来ることは、開発者が複数のプロジェクトの間で共有される通常の状況です.あなたが心の現在の状態から自分自身を解除し、完全に新しいプロジェクトにフォーカスを統合する“コンテキストスイッチ”タイムペナルティが常にあるので、理想的なシナリオではないビューの開発者の視点から.これは、以前の開発者が残したコード自体を理解するだけでなく、この新しいプロジェクトで行うために残っているユーザーストーリーやタスクを読んで含まれています.
私たちは、あなたのチームメイトがどうにか新しいプロジェクトにあなたに乗る必要がある最初の部分について多くをすることができませんが、会社のどんな開発者でも容易にそれを理解することができるように、我々が我々のコードベースですることができる若干のものがあります.過去数年にわたって、我々はいくつかの開発者は、コーディングスタイルの多くを変更する場合、それは非常に他の誰かのコードで継続することを見つけることを考え出した-それはどうにか不自然と間違って感じていないあなたは同意しない?また、特にあなたが同じことを成し遂げるために複数の方法を持っているラーラヴエルのようなフレームワークで働いているとき、あなたのコードベースを構造化する問題もあります.
ここでは、過去数年間に実装されたコーディングスタイルとプロジェクト構造の違いを最小限にする方法についていくつかのアドバイスがあります.

1プロジェクトマスターテンプレート
当社では3つの開発部門に15人の開発者がいますLaravel PHP Framework ), フロントエンドWeb開発Nuxt.js Framework ) とモバイルアプリケーションの開発React Native ). すべての開発者がそれを完全に独自の任意のガイドラインと完全にゼロから毎回のプロジェクトの起動を想像してください.そこは散らかっているだろう.誰もプロジェクトの途中で飛び込むことができず、その側に座ってその人なしで動作し続けます.
その代わりに、「マスターテンプレート」を作成しましょう(一部の会社は「スケルトンプロジェクト」または「ベーステンプレート」と呼びます).したがって、我々のケースでは、我々はLaravel、Nuxtを持っています.JSは、ネイティブのマスターテンプレートとすべてのプロジェクトは、それらから派生反応.マスターテンプレートを維持する必要があります(通常、チームのリードによって)とは、特に新しいフレームワークのバージョンが出てくるまでの時間から更新されます.テンプレートは、新鮮な新しいプロジェクトを開始するために必要なすべてを含んでいます.
すべての開発者がテンプレートに慣れてしまえば、あなたのモデル、コントローラ、カスタムロジックなどを見つけることができるので、新しいプロジェクトに切り替えるのはずっと簡単です.

強制コーディングスタイル
すべての開発者は、共有プロジェクトセンスの問題であることができるコーディングスタイルを持っています.いくつかのツールを使用すると、開発者が自分のコーディングに従うルールのセットを設定することができます.チームの大部分がそれに満足するように、あなたは銀の裏を成し遂げる方法で考えなければなりません.

PHP
PHPで最も人気のあるツールの一つはPHP Coding Standards Fixer . ドキュメントのすべてを読むことができますが、この時点で開発者は手動でコードを一度に修正しなければなりません.道を下に我々はどのように自動的にそれを達成することを学ぶでしょう.

ジャバスクリプト
JSについてPrettier , JSコードフォーマットの最も人気のあるライブラリの一つ.この時点で、開発者は同時に手動でこれを行う必要があります.
両方のツールは、私はあなたが(特にPHPのCSフィクス)を見て、あなたのニーズにそれを微調整することを強く奨励ルールの独自のセットを持っています.

3 .コードの静的解析
このステップは重要なものです.我々はツールと呼ばれるツールから活用することができますLarastan これは基本的にラッパーですPHPStan Laravel固有の設定を使用します.ツールは、我々のコードの静的解析を実行し、我々は単純にキャッチしなかったが、彼らは確かにランタイムでポップアップ表示されます我々のアプリをクラッシュさせるいくつかのエラーがあるかどうかを調べる.
上記のステップのように、開発者はコードをスキャンするために手動でそれをしなければなりません.

結合と自動化
私たちが完全にステップ2を自動化することができればよいでしょう.と3 .すべてのGitの前にコミット?はい、我々はそうすることができます、そして、それはまさに我々がするつもりです.すべてのコミットの前に、我々のコード全体をスキャンし、PHPとJSの両方のルールセットに従ってコーディングスタイルを修正し、任意の隠しエラーをキャッチするコードの静的解析を実行します.そのステップのいずれかが何かをキャッチする場合、その上に、我々は、コミットを発生させるつもりはない.代わりに、エラーを修正して再度コミットを繰り返します.
まず、ユーザーが何かをコミットしたいときに毎回反応する“pre - commit”フックを設定する必要があります.最も簡単な方法はパッケージと呼ばれるパッケージを使うことですbrainmaestro/composer-git-hooks . パッケージには、“pre - commit”のようないくつかのイベントにカスタムGitフックを追加できるようにするインストール手順があります.
パッケージをあなたのcomposer.json ファイルを更新する必要がありますscripts セクションを追加します.
"post-install-cmd": "cghooks add --ignore-lock",
"post-update-cmd": "cghooks update"
それは、フックがそれぞれの後に更新されることを意味しますcomposer install and composer update イベント.ここでは、この例を簡単にするために、ステップ2のカスタムスクリプトを追加することもできます.と3 .以下のように:
"check-format": "php-cs-fixer fix --dry-run",
"format": "php-cs-fixer fix",
"analyse": "phpstan analyse"
package.json JSフィクスジャ
"check-format": "prettier --check resources/assets/js/**/*.js",
"format": "prettier --write resources/assets/js/**/*.js"
このスクリプトはいくつかあります.
# scans the PHP code and reports for invalid coding style
composer check-format

# fixes the invalid PHP coding style
composer format

# scans the JS code and reports for invalid coding style
npm run check-format

# fixes the invalid JS coding style
npm run format

# runs static code analysis
composer analyse
そして今、私たちのスクリプトは、事前コミットイベントが発生したときに何をすべきかを指示する必要があります.上記のすべてを自動化するカスタムスクリプトを作成しましょう.まず、ターゲットスクリプトをextra セクションcomposer.json 作曲家のgitフックパッケージのドキュメントと同じようにします.
"extra": {
    "laravel": {
        "dont-discover": []
    },
    "hooks": {
        "pre-commit": "./pre-commit.sh"
    }
},
そして今は、pre-commit.sh スクリプト
#!/bin/bash

npm run check-format
PRETTIER_EXIT_CODE=$?

if [ $PRETTIER_EXIT_CODE -ne 0 ]
then
    npm run format
fi


composer check-format
CS_FIXER_EXIT_CODE=$?

if [ $CS_FIXER_EXIT_CODE -ne 0 ]
then
    composer format
fi


composer analyse
PHP_STAN_EXIT_CODE=$?


if [ $PRETTIER_EXIT_CODE -ne 0 ] || [ $CS_FIXER_EXIT_CODE -ne 0 ] || [ $PHP_STAN_EXIT_CODE -ne 0 ]
then
    exit -1
fi
英語でスクリプトはこうです.
  • チェックスタイル
  • 修正する何かがあるならば、それを修正してください
  • PHPコーディングスタイルチェック
  • 修正する何かがあるならば、それを修正してください
  • コードの静的解析を実行する
  • 終了-1 上記の手順のいずれかがエラーを報告した場合
  • プリコミットフックが終了コード0 それはコミットをキャンセルします、そして、ユーザーは再びそれをしなければなりません(あるいは、コードを最初に固定しなければなりません).

    結論
    あなたが我々がどのように我々のコーディングスタイルを維持するかについて若干の洞察をしたことを望みます、そして、プロジェクト・ベースは複数のプロジェクトと開発者を横切って同じです.これはさらにgitのアクションやStyleCI また、完全にカスタムルールや規制をお客様のニーズにカスタマイズすることができます.
    これを読んでくれてありがとう!あなたがこれを見つけたならば❤️, 🦄, そしてもちろん、共有し、あなたの考えをコメント!
    ロイドはパートナーシップで利用可能であり、新しいプロジェクトを開く.あなたが我々についてもっと知りたいならば、クリックしてくださいhere .
    また、私たちに従うことを忘れないでくださいFacebook !