web-dev-qa-db-fra.com

Configuration d'Airbnb ESLint avec React et Webpack

J'essaie de configurer le linting avec les normes Javascript d'Airbnb sur mon projet React, il utilise webpack.

Mise à jour avec les derniers packages basés sur les commentaires.

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

J'ai également une configuration de préchargement dans ma configuration webpack

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

Et la configuration suivante pour exécuter le script

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

J'ai aussi un .eslintrc fichier contenant les éléments suivants

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

Cela me donne l'erreur suivante:

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

Si je supprime le .eslintrc fichier que je pensais être en conflit, j'obtiens l'erreur suivante:

 error  Parsing error: The keyword 'const' is reserved

Suivi d'une erreur npm qui provoque la fermeture de la tâche.

Toute aide serait appréciée!

14
Ash

J'ai donc eu le même problème, mais j'ai corrigé cette erreur en utilisant la dernière version des packages actuels:

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

Et s'il vous plaît, faites ce tutoriel: React Code Style avec 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
    }

Fichier .eslintrc

    {
      "extends": "airbnb"
    }
13
Erick Voodoo