web-dev-qa-db-ja.com

VSCodeを使用したよりきれいなreact / jsx-max-props-per-line形式

Reactを使用したJavaScriptプロジェクトでPrettierを使用しています。すべてのコンポーネント小道具は1行でフォーマットされています:

<Icon icon="arrow-left" width={15} height={18} />

そして私はこれが欲しいです:

<Icon
  icon="arrow-left"
  width={15}
  height={18}
/>

.prettierrcに"react/jsx-max-props-per-line": [1, { "when": "multiline" }]を追加しましたが、結果がありません。

私もESLint設定を持っています、このルールで:

{
  "extends": [
    "eslint:recommended",
    "plugin:react/recommended",
    "plugin:prettier/recommended"
  ],
  "plugins": ["react", "prettier", "standard"],
  "rules": {
    "indent": [2, 2, { "SwitchCase": 1 }],
    "quotes": [2, "single"],
    "linebreak-style": [2, "unix"],
    "semi": [2, "always"],
    "no-console": [0],
    "no-loop-func": [0],
    "new-cap": [0],
    "no-trailing-spaces": [0],
    "no-param-reassign": [0],
    "func-names": [0],
    "comma-dangle": [0],
    "no-unused-expressions": [0],
    "block-scoped-var": [0],
    "react/prop-types": [0],
    "prettier/prettier": "error"
  }
}

私の.prettierファイル構成:

  "bracketSpacing": true,
  "jsxBracketSameLine": true,
  "printWidth": 80,
  "singleQuote": true,
  "trailingComma": "all",
  "tabWidth": 2,
  "useTabs": false,
  "react/jsx-max-props-per-line": [1, { "when": "always" }]

多分対立? react/jsx-max-props-per-lineをESLintルールに移動しようとしましたが、結果もありません。変化なし。

誰でも私を助けることができますか?

6
s-leg3ndz
module.exports = {
    'extends': [
        'eslint:recommended',

    ],
    'env': {
        'es6': true
    },
    'plugins': ['react'],
    'parser': 'babel-eslint',
    'rules': {

        // you rules....

        'react/jsx-first-prop-new-line': [1, 'multiline'],
        'react/jsx-max-props-per-line': [1,
            {
                'maximum': 1
            }
        ]
    },
};

yarn add --dev prettier-eslint-cli

VSコードuserConfig

"prettier.eslintIntegration": true,

2
joey

まず、ESLintルールはESLint構成に対してのみ行う必要があり、.prettierrcファイルは使用しないでください。これらは有効なPrettier構成ではないため、無視されます。また、ESLintはPrettierの動作に影響を与えません。 ESLintを介してPrettierを実行するか( eslint-plugin-prettier を介して自動修正可能なルールとして)、または prettier-eslint )を使用してPrettierを実行してESLintを実行できます。 VSCodeは、prettier.eslintIntegrationがオンになっている場合に使用します。

ここで、おそらく{"when": "always"}オプションを使用するようにESLintルールを変更する必要があります。 docs によると、"multiline"を使用すると、コンポーネントがすでに複数行になっている場合にのみ文句が表示されますが、1行に複数の小道具があります。

<Icon 
  icon="arrow-left"
  widht={15} height={18}
/>

"always"を使用すると、タグが元々複数行でなくても、1行に複数の小道具が許可されることはありません。

0
Lucas