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ルールに移動しようとしましたが、結果もありません。変化なし。
誰でも私を助けることができますか?
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,
まず、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行に複数の小道具が許可されることはありません。