vue3+ts+EsLint+Prettier 標準コード実装

vue3+ts+EsLint+Prettier 標準コード実装

この記事では主に、Vue3 での開発に TypeScript を使用してコーディング標準を向上させる際に、EsLint と Prettier をインストールして設定する方法を紹介します。
(1)EsLintはコーディング標準を提供します。
(2)Prettierは独自のコードフォーマットツールです。

使用

EsLintの使用

依存関係をインストールする

npm i -D eslint eslint-plugin-vue @typescript-eslint/parser @typescript-eslint/eslint-plugin

4 つの依存関係は次のとおりです。

  • - `eslint`: EsLintのコアコード
  • - `eslint-plugin-vue`: [Vue で Eslint を使用するためのプラグイン](https://eslint.vuejs.org/)
  • - `@typescript-eslint/parser`: ESLint のパーサー。Typescript を解析して Typescript コードをチェックおよび標準化するために使用されます。
  • - `@typescript-eslint/eslint-plugin`: これは、Typescriptコードを検出するためのさまざまな定義済み仕様を含むESLintプラグインです。

プロフィールを追加する

npx eslint --init

ルート ディレクトリに .eslintrc.js ファイルを追加します。 (jsファイルを選択することをお勧めします。jsonはコメントを書き込むことができません)設定ファイルの変更は主にルール内の関連する設定を変更します。詳細については、公式の設定を参照してください。

/*!
 * https://eslint.bootcss.com/docs/rules/
 * https://eslint.vuejs.org/rules/
 *
 * - 0: オフ
 * - 1: 警告する
 * - 2: エラー
 */
モジュール.エクスポート = {
  ルート: true、
  環境: {
    ブラウザ: true、
    ノード: true、
    es6: 真
  },
  パーサー: 'vue-eslint-parser',
  パーサーオプション: {
    パーサー: '@typescript-eslint/parser',
    ecmaバージョン: 2020,
    ソースタイプ: 'モジュール',
    jsxプラグマ: 'React'、
    ecma機能: {
      jsx: 真
    }
  },
  グローバル:
    Aマップ: 偽、
    AMapUI: 偽
  },
  拡張: [
    'プラグイン:vue/vue3-推奨',
    'プラグイン:@typescript-eslint/推奨',
    「もっときれい」
    'plugin:prettier/推奨'
  ]、
  ルール:
    '@typescript-eslint/ban-ts-ignore': 'オフ',
    '@typescript-eslint/明示的な関数の戻り値': 'オフ'、
    '@typescript-eslint/no-explicit-any': 'オフ',
    '@typescript-eslint/no-var-requires': 'オフ',
    '@typescript-eslint/no-empty-function': 'オフ',
    'vue/カスタムイベント名の大文字小文字': 'オフ'、
    '定義前に使用しない': 'オフ'、
    '@typescript-eslint/no-use-before-define': 'オフ',
    '@typescript-eslint/ban-ts-comment': 'オフ',
    '@typescript-eslint/ban-types': 'オフ',
    '@typescript-eslint/no-non-null-assertion': 'オフ'、
    '@typescript-eslint/明示的なモジュール境界型': 'オフ'、
    '@typescript-eslint/未使用変数なし': [
      'エラー'、
      {
        無視パターン: '^_',
        無視パターン: '^_'
      }
    ]、
    '未使用変数なし': [
      'エラー'、
      {
        無視パターン: '^_',
        無視パターン: '^_'
      }
    ]、
    '関数の括弧の前のスペース': 'オフ'、
    'vue/name-property-casing': ['error', 'PascalCase'], // vue/component-definition-name-casing はコンポーネント定義名に特定のサイズを強制します 'vue/attributes-order': 'off',
    'vue/ファイルごとに1つのコンポーネント': 'オフ'、
    'vue/html-close-bracket-newline': 'オフ',
    'vue/行あたりの最大属性数': 'オフ',
    'vue/multiline-html-element-content-newline': 'オフ',
    'vue/singleline-html-element-content-newline': 'オフ',
    'vue/attribute-hyphenation': 'オフ'、
    'vue/require-default-prop': 'オフ'、
    'vue/script-setup-uses-vars': 'オフ'、
    'vue/html-self-closing': [
      'エラー'、
      {
        html: {
          void: '常に'、
          通常: 「決してない」、
          コンポーネント: '常に'
        },
        svg: '常に',
        数学: 「常に」
      }
    ]
  }
}

Prettierの使用

依存関係をインストールする

npm i --save-dev prettier eslint-config-prettier eslint-plugin-prettier

3 つの依存関係は次のとおりです。

  • - `prettier`: prettierプラグインのコアコード
  • - `eslint-config-prettier`: ESLintとprettierのスタイル仕様の競合を解決し、prettierのスタイル仕様を優先して、ESLintのスタイル仕様を自動的に無効にします。
  • - `eslint-plugin-prettier`: ESLint仕様としてprettierを使用する

プロフィールを追加する

プロジェクトのルートディレクトリに.prettierrc.jsファイルを作成し、次の設定を追加します。

モジュール.エクスポート = {
  printWidth: 120, // 改行文字列のしきい値 tabWidth: 2, // ツールの水平インデントごとのスペース数を設定する useTabs: false,
  semi: false, // 文末にセミコロンを追加するかどうか vueIndentScriptAndStyle: true,
  singleQuote: true, // 一重引用符を使用します trailingComma: 'none', // オブジェクトの最後の要素にカンマを追加します bracketSpacing: true, // オブジェクトと配列にスペースを追加します jsxBracketSameLine: true, // jsx > は新しい行を開始します arrowParens: 'always', // (x) => {} には括弧が必要です requirePragma: false, // ファイルの先頭に @prettier を書く必要はありません
  insertPragma: false // ファイルの先頭に @prettier を自動的に挿入する必要はありません
}

EsLint に Prettier を追加する

`.eslintrc.js`ファイルを修正し、extendsを追加します。

    「もっときれい」
    'plugin:prettier/推奨'

で:

  • - `prettier/@typescript-eslint`: @typescript-eslint のスタイル指定を無効にし、prettier のスタイル指定に従います
  • - `plugin:prettier/recommended`: prettier のスタイル仕様を使用します。ESLint が有効になっている場合は、prettier でフォーマットの問題を検出し、フォーマットの問題をエラーとしてスローします。

huskyとlint-stagedを使用してコードをビルドする

依存関係をインストールする

npm i --save-dev ハスキー lint-staged

package.json を変更する
次のコードを追加します

    「ハスキー」:{
        「フック」: {
            「事前コミット」: 「lint ステージング」
        }
    },
    「lintステージング」: {
        "src*/**/*.ts": [
            "prettier --config .prettierrc.js --write",
            「エスリント」、
            「git 追加」
        ]、
        "src*/**/*.json": [
            "prettier --config .prettierrc.js --write",
            「エスリント」、
            「git 追加」
        ]
    }

このように、git commit を実行すると、EsLint は送信されたコードをチェックします。

setting.json 設定を追加する

自動保存時にコードを自動的に修復および検証するには、.vscode フォルダーに `setting.json` 構成ファイルを追加します。

{
  "typescript.tsdk": "./node_modules/typescript/lib",
  "typescript.enablePromptUseWorkspaceTsdk": true、
  "volar.tsPlugin": true、
  "volar.tsPluginStatus": false,
  //===========================================
  //============== エディター =======================
  //===========================================
  "explorer.openEditors.visible": 0,
  "エディター.タブサイズ": 2,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "diffEditor.ignoreTrimWhitespace": false,
  //===========================================
  //============== その他 =========================
  //===========================================
  "breadcrumbs.enabled": true、
  "ブラウザで開く.default": "chrome",
  //===========================================
  //============== ファイル =========================
  //===========================================
  "files.eol": "\n",
  "検索除外": {
    "**/node_modules": 真、
    "**/*.log": 真、
    "**/*.log*": 真、
    "**/bower_components": 真、
    "**/dist": 真、
    "**/elehukouben": true、
    "**/.git": 真、
    "**/.gitignore": 真、
    "**/.svn": 真、
    "**/.DS_Store": 真、
    "**/.idea": 真、
    "**/.vscode": 偽、
    "**/yarn.lock": 真、
    "**/tmp": 真、
    「アウト」:真、
    「距離」:真、
    "node_modules": 真、
    "CHANGELOG.md": 真、
    「例」: true、
    "res": 真、
    「スクリーンショット」:true、
    "yarn-error.log": true、
    "**/.yarn": 真
  },
  "ファイル.除外": {
    "**/.cache": 真、
    "**/.editorconfig": true、
    "**/.eslintcache": 真、
    "**/bower_components": 真、
    "**/.idea": 真、
    "**/tmp": 真、
    "**/.git": 真、
    "**/.svn": 真、
    "**/.hg": 真、
    "**/CVS": 真、
    "**/.DS_Store": 真
  },
  "files.watcherExclude": {
    "**/.git/objects/**": 真、
    "**/.git/subtree-cache/**": true、
    "**/.vscode/**": 真、
    "**/node_modules/**": 真、
    "**/tmp/**": 真、
    "**/bower_components/**": 真、
    "**/dist/**": 真、
    "**/yarn.lock": 真
  },
  "stylelint.enable": 真、
  "stylelint.packageManager": "ヤーン",
  "liveServer.settings.donotShowInfoMsg": true,
  "telemetry.enableCrashReporter": false、
  "workbench.settings.enableNaturalLanguageSearch": false,
  "パスインテリセンスマッピング": {
    "/@/": "${workspaceRoot}/src"
  },
  "prettier.requireConfig": true、
  "typescript.updateImportsOnFileMove.enabled": "常に",
  "workbench.sideBar.location": "左",
  "[javascriptreact]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[typescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[typescriptreact]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[html]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[css]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[少ない]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[scss]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[マークダウン]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": 真
  },
  "[vue]": {
    "editor.codeActionsOnSave": {
      "source.fixAll.eslint": 偽
    }
  },
  "cSpell.words": [
    「vben」、
    「ウィンディ」、
    「ブラウザリスト」、
    "テールウィンドcss",
    「esnext」、
    「アントビ」、
    「ちっちゃい」、
    「QRコード」、
    「サイダー」、
    「ピニア」、
    「サイダー」、
    「n進捗」
  ]
}

参考文献

プリティエ公式サイト
EsLint公式サイト
EsLintルール
Prettier この記事を読んでください EsLint+Prettier を使用して TypeScript コードを標準化する

vue3+ts+EsLint+Prettier 標準コードの実装に関するこの記事はこれで終わりです。より関連性の高い vue3 ts 標準コードコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • VueでのESLintの使用に関する詳細な説明
  • Vue スキャフォールディング vue-cli 学習と使用チュートリアル
  • Vue で eslint と editorconfig を使用する方法

<<:  プロジェクトにおける CSS グリッドシステムの柔軟な使用方法の詳細な説明

>>:  mysql 10進データ型変換の実装

推薦する

CentOS7 (YUM) での MySQL 5.7 のインストールと設定のチュートリアル

インストール環境: CentOS7 64ビット、MySQL5.7 1. YUMソースを設定するMyS...

Vue が DingTalk の出勤カレンダーを実装

この記事では、DingTalkの勤怠カレンダーを実装するためのVueの具体的なコードを参考までに共有...

Linux で Xfce デスクトップ環境を使用すべき 8 つの理由

いくつかの理由(好奇心も含む)から、数週間前に Linux デスクトップとして Xfce を使い始め...

ボタンに醜い灰色の枠線が付いています。これを削除するにはどうすればよいですか?

ダイアログをクロージャで使用し、右上隅の向こう側に閉じるボタンがあるダイアログを描画しました。ボタン...

HTMLタグと基本要素の学習のまとめ

1. HTML の要素とタグ<br />要素は、1 つのタグまたは 1 組のタグによって...

MySQL 5.6 のインストール手順(画像とテキスト付き)

MySQL はオープンソースの小規模リレーショナル データベース管理システムです。現在、MySQL...

実務経験7年のフロントエンドスーパーバイザーによる経験共有

今日はベテランの貴重な経験を共有します。著者は技術管理の経験が7年あり、多い時は80人以上を率いてい...

MySQL 最適化のヒント: 重複削除の実装方法の分析 [数百万のデータ]

この記事では、MySQL 最適化のヒントで重複したエントリを削除する方法を例を使って説明します。ご参...

4つのReactコンポーネントにおけるDOMスタイル設定の詳細な説明

1. インラインスタイル仮想DOMにインラインスタイルを追加するには、式を使用してスタイルオブジェク...

Linux に MySql 5.7.21 をインストールするための詳細な手順

序文Linux で最も広く使用されているデータベースは MySQL です。この記事では、Linux ...

MySQL の if 関数の正しい使い方の詳細な説明

今日私が書こうとしている内容では、プログラムは 7 時間近く実行され、データベースに 1,000 万...

ウェブサイトレイアウトにおける CSS の計算関数 calc の例

calc は数値を計算するために使用される CSS 関数です。長さ、角度、時間などを計算できます。 ...

VSCode の JS フォーマットでセミコロンを自動的に追加または削除する方法について

導入js コード文の末尾にセミコロンを追加しても追加しなくても問題ありません。一般的に、チームで開発...

Javascriptでシングルトンパターンを実装する方法

目次概要コードの実装シングルトンパターンの簡易版改良版プロキシバージョンシングルトンモード遅延シング...

SQLデータベースの14の事例の紹介

データシート /* Navicat SQLite データ転送 ソースサーバー: school ソース...