ギャツビーとの付き合い
10361 ワード
この記事はもともとmariokandut.comに掲載された.
私はあなたのために素晴らしいニュースを持っています.エストスのセットアップを内蔵したギャツビーの船.Gatsby docsによれば、提供されたeslint configはそのユーザーの大部分に適しています.
では、なぜカスタマイズ?例えば、「標準的な」ESINTセットアップのカスタマイズのいくつかの理由があるかもしれません.プロジェクト要件 の会社要件 内部のテスト 個人的な好み、その他 あなたがリンギングについてもっと知りたいならば、エスリントが正しい選択であるならば、What is Lintingにこの記事を見てください.
エスコートをカスタマイズする方法
私は、あなたがそうであるので、あなたは追加のプリセット、プラグインと規則を加えることができるように、Eslint Config Gatsbyでカスタマイズから始めます.
Gatsbyスターターまたはgithubによって提供されるeslintの下で見てください.
eslintファイルのためのgatsby詳細を覚えておいてください no
カスタマイズ
現在いくつかのオプションがあります.現在、 あなたがゼロから始めて、あなた自身の結線規則を適用するならば、私はGatsbyから規則をコピーして、その点から修正することを勧めます. 別のオプションは、eslintをゼロから設定することです.エスリントからのドキュメントは、Configuring ESLintのための大きなユーザーガイドを持っています. Gatsby Eslintをカスタマイズする一つの方法は、コミュニティプラグインgatsby-plugin-eslintを使用することです.
プラグインの使用
私はこのプラグインをお勧めします. Gatsbyプラグインをインストールします.
とplugin pageのインストール: を作成します.プロジェクトのルートにあるファイル. プラグインを
プラグインのオプションを使用して規則を指定します. github
プラグインのオプション
デフォルトのオプションは次のとおりです.リント.ジェイ.JSXファイル. は、ライティングから 開発段階での開発における唯一のライン. オプションのESLintオプション. インラインファイル形式、除外、およびeslintローダオプションをカスタマイズします.
eslint-loader
プラグインプラグイン
ESLILTのための反応特異的な結実規則は
をインストールします
Airbnbのeslint設定
このパッケージは、Airbnbから拡張可能な共有設定としてeslint configは、
をインストールします
追加または更新
エスリントを無効にする
ちょうどこのブログ記事で
読んでいただきありがとうございます、ご質問がある場合は、コメント機能を使用するか、私にメッセージを送ってください.
参考文献(そして、大きい感謝): 、eslint-config-airbnb、
私はあなたのために素晴らしいニュースを持っています.エストスのセットアップを内蔵したギャツビーの船.Gatsby docsによれば、提供されたeslint configはそのユーザーの大部分に適しています.
では、なぜカスタマイズ?例えば、「標準的な」ESINTセットアップのカスタマイズのいくつかの理由があるかもしれません.
エスコートをカスタマイズする方法
私は、あなたがそうであるので、あなたは追加のプリセット、プラグインと規則を加えることができるように、Eslint Config Gatsbyでカスタマイズから始めます.
Gatsbyスターターまたはgithubによって提供されるeslintの下で見てください.
module.exports = {
extends: [
require.resolve(`eslint-config-react-app`),
],
plugins: [`graphql`],
rules: {
// New versions of react use a special jsx runtime that remove the requirement
// for having react in scope for jsx. Once the jsx runtime is backported to all
// versions of react we can make this always be `off`.
// I would also assume that eslint-config-react-app will switch their flag to `off`
// when jsx runtime is stable in all common versions of React.
'react/react-in-jsx-scope': usingJsxRuntime
? `off`
: `error`, // Conditionally apply for reactRuntime?
'import/no-webpack-loader-syntax': [0],
'graphql/template-strings': [
`error`,
{
env: `relay`,
schemaString: printSchema(schema, {
commentDescriptions: true,
}),
tagName: `graphql`,
},
],
'react/jsx-pascal-case': `off`, // Prevents errors with Theme-UI and Styled component
// https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/master/docs/rules
'jsx-a11y/accessible-emoji': `warn`,
'jsx-a11y/alt-text': `warn`,
'jsx-a11y/anchor-has-content': `warn`,
'jsx-a11y/anchor-is-valid': `warn`,
'jsx-a11y/aria-activedescendant-has-tabindex': `warn`,
'jsx-a11y/aria-props': `warn`,
'jsx-a11y/aria-proptypes': `warn`,
'jsx-a11y/aria-role': `warn`,
'jsx-a11y/aria-unsupported-elements': `warn`,
// TODO: It looks like the `autocomplete-valid` rule hasn't been published yet
// "jsx-a11y/autocomplete-valid": [
// "warn",
// {
// inputComponents: [],
// },
// ],
'jsx-a11y/click-events-have-key-events': `warn`,
'jsx-a11y/control-has-associated-label': [
`warn`,
{
ignoreElements: [
`audio`,
`canvas`,
`embed`,
`input`,
`textarea`,
`tr`,
`video`,
],
ignoreRoles: [
`grid`,
`listbox`,
`menu`,
`menubar`,
`radiogroup`,
`row`,
`tablist`,
`toolbar`,
`tree`,
`treegrid`,
],
includeRoles: [`alert`, `dialog`],
},
],
'jsx-a11y/heading-has-content': `warn`,
'jsx-a11y/html-has-lang': `warn`,
'jsx-a11y/iframe-has-title': `warn`,
'jsx-a11y/img-redundant-alt': `warn`,
'jsx-a11y/interactive-supports-focus': [
`warn`,
{
tabbable: [
`button`,
`checkbox`,
`link`,
`progressbar`,
`searchbox`,
`slider`,
`spinbutton`,
`switch`,
`textbox`,
],
},
],
//"jsx-a11y/label-has-for": `warn`, was deprecated and replaced with jsx-a11y/has-associated-control in v6.1.0
'jsx-a11y/label-has-associated-control': `warn`,
'jsx-a11y/lang': `warn`,
'jsx-a11y/media-has-caption': `warn`,
'jsx-a11y/mouse-events-have-key-events': `warn`,
'jsx-a11y/no-access-key': `warn`,
'jsx-a11y/no-autofocus': `warn`,
'jsx-a11y/no-distracting-elements': `warn`,
'jsx-a11y/no-interactive-element-to-noninteractive-role': `warn`,
'jsx-a11y/no-noninteractive-element-interactions': [
`warn`,
{
body: [`onError`, `onLoad`],
iframe: [`onError`, `onLoad`],
img: [`onError`, `onLoad`],
},
],
'jsx-a11y/no-noninteractive-element-to-interactive-role': `warn`,
'jsx-a11y/no-noninteractive-tabindex': `warn`,
'jsx-a11y/no-onchange': `warn`,
'jsx-a11y/no-redundant-roles': `warn`,
'jsx-a11y/no-static-element-interactions': `warn`,
'jsx-a11y/role-has-required-aria-props': `warn`,
'jsx-a11y/role-supports-aria-props': `warn`,
'jsx-a11y/scope': `warn`,
'jsx-a11y/tabindex-no-positive': `warn`,
},
};
まず必要なeslint依存性が必要です.npm install --save-dev eslint-config-react-app
次に、エディタ/IDEを介してファイル242479142を作成します.module.exports = {
globals: {
__PATH_PREFIX__ : true,
},
extends: `react-app`,
};
それです.今、あなたはすべての追加のプリセット、プラグインを追加する準備ができて、あなたのプロジェクトが必要と規則.eslintファイルのためのgatsby詳細を覚えておいてください
.eslintrc.js
: gatsbyはデフォルトでeslintローダを追加します.これはeslintからすべてのフィードバックを端末/ブラウザコンソールにパイプします.touch .eslintrc.js
Yes 242479142 :カスタムESLint file
ファイルを追加すると、Gatsbyはeslintの設定を完全に制御できます.これはまた、組み込みのESLINTローダをオーバーライドし、デフォルトのルールはロードされません.
カスタマイズ
現在いくつかのオプションがあります.
ESLint-file
にあなたのプロジェクト特有の規則をコピーしてください.プラグインの使用
私はこのプラグインをお勧めします.
.eslintrc
.eslintrc
に追加しました.module.exports = {
plugins: ['gatsby-plugin-eslint'],
};
プラグインのオプション
デフォルトのオプションは次のとおりです.
npm install --save-dev gatsby-plugin-eslint
、npm install --save-dev eslint eslint-loader
、およびgatsby-config.js
フォルダを除外します.{
resolve: 'gatsby-plugin-eslint',
options: {
test: /\.js$|\.jsx$/,
exclude: /(node_modules|.cache|public)/,
stages: ['develop'],
options: {
emitWarning: true,
failOnError: false
}
}
}
Lintingを始める簡単な方法はこれらの2つのリンギングプラグインです.eslint-loader
プラグインプラグイン
ESLILTのための反応特異的な結実規則
node_modules
.cache
ファイルの更新{
"parser": "babel-eslint",
"rules": {
"strict": 0
},
"extends": [
"eslint:recommended",
"plugin:react/recommended"
]
}
ESLint-LoaderAirbnbのeslint設定
このパッケージは、Airbnbから拡張可能な共有設定としてeslint config
public
を提供します.npm install --save-dev babel-eslint eslint-plugin-import eslint-plugin-react
.eslintrc
:{
"extends": "airbnb"
}
eslint-plugin-reactエスリントを無効にする
ちょうどこのブログ記事で
.eslintrc
であるために、私はこれを推薦しません、しかし、あなたが本当に無効にしたいならば、あなたはそれをすることができます.ただnpm install --save-dev eslint-config-airbnb eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-react
ファイルを作成してください、そして、それは.eslintrc
を無効にします、そして、それはすべての輸入されたlint規則でそれをします.読んでいただきありがとうございます、ご質問がある場合は、コメント機能を使用するか、私にメッセージを送ってください.
参考文献(そして、大きい感謝): 、eslint-config-airbnb、
Reference
この問題について(ギャツビーとの付き合い), 我々は、より多くの情報をここで見つけました https://dev.to/mariokandut/eslint-with-gatsby-488pテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol