Настройка Airbnb ESLint с помощью React и Webpack

Я пытаюсь настроить linting со стандартами Javascript Airbnb в моем проекте React, он использует webpack.

Обновлен последними пакетами на основе комментариев.

"babel-eslint": "^6.1.2",
"eslint": "^3.2.2",
"eslint-config-airbnb": "^10.0.0",
"eslint-plugin-import": "^1.12.0",
"eslint-plugin-jsx-a11y": "^2.0.1",
"eslint-plugin-react": "^6.0.0",
"jshint": "^2.9.2",
"jshint-loader": "^0.8.3",
"json-loader": "^0.5.4",

У меня также есть настройка предварительного загрузчика в моей конфигурации веб-пакета.

preLoaders: [
    {
        test: /\.jsx?$/,
        loaders: ['eslint'],
        // define an include so we check just the files we need
        include: PATHS.app
    }
],

И следующие настройки для запуска скрипта

  "lint": "eslint . --ext .js --ext .jsx --ignore-path .gitignore --cache",

У меня также есть файл .eslintrc со следующим

{
  "extends": "airbnb",
   "env": {
      "node": true,
      "es6": true
   }
 }

Это дает мне следующую ошибку:

Configuration for rule "react/jsx-sort-props" is invalid:
Value "data["0"].shorthandLast" has additional properties.

Если я удалю файл .eslintrc, который, по моему мнению, может конфликтовать, я получаю следующую ошибку:

 error  Parsing error: The keyword 'const' is reserved

Затем следует ошибка npm, которая приводит к завершению задачи.


person Ash    schedule 04.08.2016    source источник
comment
Вы пробовали это с eslint 3? Были некоторые недавние изменения и на основе ошибки, поэтому он ломается. Если вы пока не можете использовать eslint 3 по той или иной причине, вам придется использовать более старую версию предустановки, совместимую с ним.   -  person Juho Vepsäläinen    schedule 04.08.2016
comment
На самом деле у меня есть eslint 3.9.5 install @JuhoVepsäläinen, это достаточно поздняя версия?   -  person Ash    schedule 04.08.2016
comment
Он подберет "eslint": "^2.13.1",, даже если он установлен глобально.   -  person Juho Vepsäläinen    schedule 04.08.2016
comment
Я обновил свой package.json до 3.9.5, и это не имело никакого значения.   -  person Ash    schedule 04.08.2016
comment
Итак, теперь я правильно исправил свою версию eslint до ^ 3.2.2, но все еще та же проблема.   -  person Ash    schedule 04.08.2016
comment
Убедитесь, что eslint-plugin-react также обновлен. Они выпустили 6.0.0 совсем недавно, и это может решить вашу проблему, учитывая, откуда возникает ошибка.   -  person Juho Vepsäläinen    schedule 04.08.2016
comment
Да, я обновил все пакеты до последней версии (все удалил, а также переустановил). Все равно не повезло. Будет обновлять вопрос с последними данными   -  person Ash    schedule 04.08.2016
comment
У меня есть рабочая настройка здесь. Кажется, самая большая разница в том, что я использую другой парсер. Трудно сказать что-то кроме этого. Может быть, вы могли бы попробовать ESLint gitter для идей.   -  person Juho Vepsäläinen    schedule 04.08.2016
comment
Похоже, вы не добавили файл eslintrc в параметры конфигурации в веб-пакете eslint: {configFile: '.eslintrc'}, не могли бы вы попробовать после его добавления   -  person Deadfish    schedule 04.08.2016
comment
У меня та же проблема со всеми обновленными пакетами, есть идеи, что еще я могу сделать, чтобы это исправить?   -  person Valery Bugakov    schedule 04.08.2016
comment
@skymk В итоге мне пришлось удалить все мои модули узлов и переустановить. Как только я это сделал, у меня не было проблем.   -  person Ash    schedule 05.08.2016


Ответы (1)


Итак, у меня была та же проблема, но я исправил эту ошибку, используя последнюю версию текущих пакетов:

"eslint": "3.2.2",
"eslint-config-airbnb": "10.0.0",
"eslint-loader": "1.5.0",
"eslint-plugin-import": "1.12.0",
"eslint-plugin-jsx-a11y": "2.0.1",
"eslint-plugin-mocha": "2.2.0",
"eslint-plugin-react": "6.0.0",

И, пожалуйста, сделайте это руководство: Стиль React Code с ESLint + Babel + Webpack

module: { 
    preLoaders: [
      {
        test: /\.jsx?$/,
        loaders: ['eslint-loader'],
        include: path.join(__dirname, 'src'),
        exclude: path.join(__dirname, 'src/app/container')
      }
    ],
...
    eslint: {
      configFile: './.eslintrc',  //your .eslintrc file 
      emitWarning: true
    }

файл .eslintrc

    {
      "extends": "airbnb"
    }
person Erick Voodoo    schedule 04.08.2016
comment
Это именно то, что я должен был сделать, мне пришлось удалить все пакеты и переустановить, так как были какие-то странные конфликты! - person Ash; 05.08.2016
comment
Я не уверен насчет удаления глобального eslint или переустановки… Я так и сделал. На самом деле потребовался перезапуск Atom, чтобы это исчезло. - person Devin; 14.08.2016