2016-03-23 2 views
5

Я не могу понять, как настроить файл .eslintrc для правильного «принятия» JSX. Другими словами, это волнует, когда JSX вводится в Atom.Настройка eslint с помощью JSX

Я добавил "parser": "babel-eslint", так что, кажется, часть того, что другие люди делали, чтобы скорректировать свои линт ... но потом я получаю эту ошибку в Atom:

Ошибка: Не удается найти модуль «столпотворение -eslint»от '' /Users/josetello/.atom/packages/linter-eslint/node_modules

меня установлен столпотворение-eslint глобально и --save-dev. Не повезло. Не уверен, почему он жалуется на пакет атома ...

Есть ли лучший способ настроить .eslintrc для JSX?

Мой .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

Какую версию eslint вы используете? – dannyjolie

+0

Использование версии 2.4.0 – Jose

ответ

19

Все изменилось в ESLint 2 относительно ecmaFeatures (and a lot more...)

Вместо

{ 
    ecmaFeatures: { 
     jsx: true 
    } 
} 

попробовать

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

И я думаю, вы можете удалить parser, но я не использую Atom самостоятельно, поэтому я не буду говорить это наверняка. Это не часть моего собственного .eslintrc. И тогда вы, вероятно, захотите добавить реактивные правила перебора. https://github.com/yannickcr/eslint-plugin-react

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

Я хотел бы просто добавить все это барахло в rules поэтому у меня есть быстрый доступ, когда я хочу, чтобы отключить что-то, но, возможно, это только мне.

{ 
    "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

Я действительно сомневаюсь. Я только что обновил eslint и кучу других пакетов в моем текущем проекте на прошлой неделе, и это было совсем не весело, но я, по-видимому, изучил пару новых трюков :) – dannyjolie

+0

Это может помочь некоторым людям: вы можете проверить https: // www.robinwieruch.de/react-eslint-webpack-babel/ для установки ESLint в React, Webpack, Babel. –