ESLintは配置を共有して発表できます.チームがカスタマイズしたESLINEルールが新鮮にできます.


ESLintは2013年6月に発売され、今まで4年間の最新バージョンv 4.8.0です.これは現在主流のJavascriptとJSXコード規範検査の利器で、多くの大企業はAirbnbとGoogleのように自分のJavascriptコード規範があります.例えば大名トップのeslint-config-airbbanとeslint-config-googleです.より良い統一チームのためのJSプログラミングスタイルとコード品質.feflowの公式は調査と探求を経て、やっとESLintの解決案を迎えました.最も核心的な理念は、eslint:recommundに基づいて規則の確定化をすることです.
一回の生産事故から話すと
2017年4月13日、騰訊高級技師の聖さんはチャージ業務をする時に、アップルアープの支払配置を修正して、JSONの配置を重複したkeyを増加しました.コードが発表された後、小さい部分でvivo携帯を使ったユーザーのフィードバックチャージ画面のホワイトスクリーンがあります.Nowアプリ内でチャージできません.最後の位置付けはvivo携帯はX 5カーネルを使っていないシステムのwebviewを使っていますが、JSONを解析する時に重複したkeyエラーが発生し、ページの白スクリーンを引き起こします.
似たような問題がたくさんあります.例えば変数が定義されていない、方法がカバーされているなど、jsコードが時報を実行するのが間違っています.どうやって避けるべきですか?ESLINEはsharrable configを提供しています.フロントエンドチームは自分のチームの状況に応じてESLINE仕様をカスタマイズできます.
ルール定義基準
  • は車輪を繰り返さないで、eslint:recommund構成に基づいて、
  • を改善する.
  • コードエラーの発見を助けることができます.全部
  • を開けます.
  • 目的はチームのコードスタイルの統一であり、開発体験を制限することではない.
    eslint-config-invwebの紹介
    eslint-config-invwebは騰訊NOW生放送IVWEBチームのESLint配置である.初版を発表しましたが、現在は約130のルールがあり、存在する可能性のあるエラー、最適な実践、変数、コードスタイル、ES 6に関する5つの大きなルールプレートが含まれています.
    リポジトリの住所:https://github.com/feflow/esl...issueまたはPRを提出して一緒にチームルールのメンテナンスに参加してください.
    部分規則説明
    3つの情報を含みます.一番左はルールで、真ん中はエラーレベル、右側は説明の意味です.エラーレベルは、error、warn、offの3つのレベルが含まれます.
    より詳細なルール説明は、ルールドキュメントに行きます.
    プロジェクトアクセス使用
    基本理念:プロジェクトコードが多すぎて、歴史コードに影響しません.変更されたコード(.jsと.jsxの拡張子)のみをチェックします.
    第一歩:追加または変更.eslintrc.jsプロファイル
    module.exports = {
        "env": {
            "es6": true,
            "browser": true,
            "node": true
        },
        "extends": ["eslint:recommended", "ivweb"],
        "globals": {
            "__inline": true,
            "IS_SERVER": true,
            "__uri": true
        }
    };
    一部のeslint:recommendで言及されている規則はivwebでは取り上げられていませんので、eslint:recommundと一緒に使用したほうがいいです.
    eslint:recommundとivwebを同時に継承するだけでいいです.ivwebが最後に置くことを確保します.一部のeslint:recommundで定義されているルールはちょっと厳しいです.ivwebで定化された修正があります.
    第二ステップ:precommitのhookとeslint-config-ivwebの依存性を増加します.
    ここではhuskyを使って、すべてのHookを管理します.以前のcomit messageチェックと同じです.
    {
      "name": "with-lint-staged",
      "version": "0.0.1",
      "scripts": {
        "precommit": "lint-staged"
      },
      "lint-staged": {
        "src/*.{js,jsx}": [
          "eslint --fix",
          "git add"
        ]
      },
      "devDependencies": {
        "eslint": "^4.8.0",
        "eslint-config-ivweb": "^0.1.0",
        "husky": "^0.14.3",
        "lint-staged": "^4.2.3"
      }
    }
    質疑インタラクティブ
    Q:なぜ直接airbbanチームのeslint-config-airbbanを使わないですか?A:airbnbオフィシャルのルールは大きすぎて、10以上のルールファイルがあります.メンテナンスコストが高く、軽量級のeslint:recommundに基づいて、オーダーメードチームのESLintルールを選ぶほうが簡単で、メンテナンスにも便利です.
    Q:eslint-config-invwebのルールはちょっと合わないと思いますが、どうすればいいですか?A:issue検討または直接PRを提出してください.リポジトリの住所:https://github.com/feflow/esl...
    Q:なぜlint-stagedを使っていますか?A:lint-stagedは修正したjsファイルの行数だけコード規範検査を行います.コード検査は一切しません.より合理的で、操作可能です.