JsxHint と JSHint は、JSX を lint するのに最適なツールではありません。JSHint は JSX をサポートしていません。JsxHint が行うのは、JSX を変換し、変換されたコードで JSHint を実行することだけです。私はReactプラグインでESLintを使用しています(そして強くお勧めします)。Eslint は esprima -fbやbabel-eslintなどのカスタム パーサーを使用して任意の Javascript フレーバーを解析できるため、これは優れています(以下の更新を参照)。
サンプル.eslintrc
ファイル:
{
"parser": "esprima-fb",
"env": {
"browser": true,
"node": true
},
"rules": {
"no-mixed-requires": [0, false],
"quotes": [2, "single"],
"strict": [1, "never"],
"semi": [2, "always"],
"curly": 1,
"no-bitwise": 1,
"max-len": [1, 110, 4],
"vars-on-top": 0,
"guard-for-in": 1,
"react/display-name": 1,
"react/jsx-quotes": [2, "double", "avoid-escape"],
"react/jsx-no-undef": 2,
"react/jsx-sort-props": 0,
"react/jsx-uses-react": 1,
"react/jsx-uses-vars": 1,
"react/no-did-mount-set-state": 2,
"react/no-did-update-set-state": 2,
"react/no-multi-comp": 0,
"react/no-unknown-property": 1,
"react/prop-types": 2,
"react/react-in-jsx-scope": 1,
"react/self-closing-comp": 1,
"react/wrap-multilines": 2
},
"ecmaFeatures": {
"jsx": true
},
"plugins": [ "react" ],
"globals": {
"d3": true,
"require": "true",
"module": "true",
"$": "true",
"d3": "true"
}
}
アップデート
esprima-fb はまもなく Facebook によって廃止されます。eslintのパーサーとしてbabel-eslintを使用します。Babel と Eslint を React と連携するようにセットアップする方法について詳しく知るには、この Github プロジェクトを参照してください。