2016-03-23 22 views
5

Nie mogę dowiedzieć się, jak skonfigurować plik .eslintrc, aby poprawnie "zaakceptować" JSX. Innymi słowy, to przeraża, gdy JSX jest wpisywany w Atom.Konfigurowanie eslint z JSX

dodałem "parser": "babel-eslint", ponieważ wydaje się być częścią tego, co inni ludzie robią, aby dostosować swoje Linters ... ale potem dostaję ten błąd w Atom:

Błąd: Nie można odnaleźć modułu „Babel -eslint”z '/Users/josetello/.atom/packages/linter-eslint/node_modules'

mam babel-eslint zainstalowane globalnie i --save-dev. Brak szczęścia. Nie wiem, dlaczego narzeka na pakiet atomowy ...

Czy istnieje lepszy sposób konfiguracji .eslintrc dla JSX?

Mój plik .eslintrc:

{ 
    "settings": { 
    "ecmascript": 6 
}, 
"ecmaFeatures": { 
    "blockBindings": true, 
    "jsx": true 
}, 
"parser": "babel-eslint", 
"env": { 
    "browser": true, 
    "jquery": true, 
    "node": true, 
    "mocha": true, 
    "es6": true 
}, 
"rules": { 
    "prefer-arrow-callback": 1, 
    "semi": 1, 
    "strict": 0, 
    "indent": [2, 2], 
    "quotes": [1, "single"], 
    "no-multi-spaces": [1, { 
    "exceptions": { 
     "VariableDeclarator": true, 
     "FunctionExpression": true 
    } 
    }], 
    "key-spacing": [0, {"align": "value"}], 
    "no-underscore-dangle": 0 
}, 
{ 
    "plugins": [ 
     "react" 
    ] 
    } 
} 
+0

Którą wersję eslint używasz? – dannyjolie

+0

Używanie wersji 2.4.0 – Jose

Odpowiedz

19

Wiele się zmieniło w ESLint 2 w odniesieniu do ecmaFeatures (and a lot more...)

Zamiast

{ 
    ecmaFeatures: { 
     jsx: true 
    } 
} 

spróbować

{ 
    parserOptions: { 
     ecmaFeatures: { 
      jsx: true 
     } 
    } 
} 

Myślę, że można usunąć parser, ale sam nie używam Atomu, więc nie zamierzam tego mówić na pewno. To nie jest część mojego .eslintrc. A następnie prawdopodobnie chcesz dodać reguły linting reagować. https://github.com/yannickcr/eslint-plugin-react

{ 
    "extends": ["eslint:recommended", "plugin:react/recommended"] 
} 

Chciałbym tylko dodać te wszystkie śmieci do rules więc mam szybki dostęp, gdy chcę wyłączyć coś, ale może to tylko ja.

{ 
    "rules": { 
    "jsx-quotes"  : 1, 
    "react/display-name": 0, 
    "react/forbid-prop-types": 0, 
    "react/jsx-boolean-value": 1, 
    "react/jsx-closing-bracket-location": 1, 
    "react/jsx-curly-spacing": 1, 
    "react/jsx-handler-names": 1, 
    "react/jsx-indent-props": 1, 
    "react/jsx-indent": 1, 
    "react/jsx-key": 1, 
    "react/jsx-max-props-per-line": 0, 
    "react/jsx-no-bind": 0, 
    "react/jsx-no-duplicate-props": 1, 
    "react/jsx-no-literals": 0, 
    "react/jsx-no-undef": 1, 
    "react/jsx-pascal-case": 1, 
    "react/jsx-sort-prop-types": 0, 
    "react/jsx-sort-props": 0, 
    "react/jsx-uses-react": 1, 
    "react/jsx-uses-vars": 1, 
    "react/no-danger": 1, 
    "react/no-deprecated": 1, 
    "react/no-did-mount-set-state": 1, 
    "react/no-did-update-set-state": 1, 
    "react/no-direct-mutation-state": 1, 
    "react/no-is-mounted": 1, 
    "react/no-multi-comp": 0, 
    "react/no-set-state": 1, 
    "react/no-string-refs": 0, 
    "react/no-unknown-property": 1, 
    "react/prefer-es6-class": 1, 
    "react/prop-types": 1, 
    "react/react-in-jsx-scope": 1, 
    "react/require-extension": 1, 
    "react/self-closing-comp": 1, 
    "react/sort-comp": 1, 
    "react/wrap-multilines": 1 
    } 
} 
+0

Naprawdę w to wątpię. Właśnie uaktualniłem eslint i kilka innych pakietów w moim bieżącym projekcie w zeszłym tygodniu i nie było to wcale zabawne, ale najwyraźniej poznałem kilka nowych sztuczek :) – dannyjolie

+0

Może to pomóc niektórym ludziom: możesz sprawdzić https: // www.robinwieruch.de/react-eslint-webpack-babel/ dla konfiguracji ESLint w React, Webpack, Babel. –

Powiązane problemy