Razzle: Comment utiliser eslint avec Typescript?

Créé le 12 nov. 2019  ·  11Commentaires  ·  Source: jaredpalmer/razzle

J'ai ajouté razzle-eslint-plugin et l'ai inclus dans mon razzle.config.js comme

plugins: ['scss', 'eslint']

Le problème est que la console n'affiche aucun avertissement de charpie pour les fichiers dactylographiés. Si j'exécute manuellement eslint depuis la console, je pourrais voir les erreurs de charpie, mais pas lors de l'exécution de razzle start

En vérifiant la source razzle-eslint-plugin j'ai pu voir que les règles ne mentionnent que les fichiers js et jsx à vérifier comme indiqué ci-dessous

 config.module.rules = [
    {
      test: /\.(js|jsx|mjs)$/,
      enforce: 'pre',
      loader: require.resolve('eslint-loader'),
      options: mainEslintOptions,
      exclude: /node_modules/,
    },
    ...config.module.rules,
  ]

Si j'ajoute ts|tsx à la configuration ci-dessus, je pourrais voir rapidement les avertissements. Mais cela nécessite d'éditer manuellement le fichier unde node_modules que je voudrais éviter. Existe-t-il un moyen d'étendre la configuration de razzle.config.js? J'ai essayé de pousser une nouvelle règle via module.rules.push mais cela entraîne une erreur These relative modules were not found:

Si cela doit être ajouté à razzle-eslint-plugin je pourrais augmenter un PR. Veuillez suggérer

question stale

Commentaire le plus utile

Tslint est obsolète pour ESLint dans le courant de 2019, et c'est un peu mi-novembre, donc razzle devrait probablement créer un plan pour passer à ESLint.

Tous les 11 commentaires

J'ai défini dans mon fichier razzle.config.js les paramètres suivants:

'use strict'

module.exports = {
  plugins: [
    {
      name: 'typescript',
      options: {
        useBabel: true,
        useEslint: true,
        forkTsChecker: {
          tsconfig: './tsconfig.json',
          tslint: undefined,
          watch: './src',
          typeCheck: true
        }
      }
    }
  ]
}

puis .eslintrc.json comme suit

{
  "extends": [
    "eslint:recommended",
    "prettier",
    "plugin:jsx-a11y/recommended",
    "plugin:@typescript-eslint/recommended",
    "plugin:react/recommended"
  ],
  "plugins": ["@typescript-eslint"],
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
    "ecmaVersion": 6,
    "sourceType": "module",
    "ecmaFeatures": {
      "modules": true,
      "jsx": true
    }
  },
  "env": {
    "browser": true,
    "node": true,
    "jest": true
  },
  "settings": {
    "react": {
      "version": "detect"
    },
    "import/resolver": {
      "node": {
        "extensions": [".js", ".jsx", ".ts", ".tsx"]
      }
    }
  }
}

puis dans mon package.json la ligne suivante pour effectuer le peluchage:

"lint": "eslint --ext 'js,jsx,ts,tsx' .",

@andersnylund Merci pour votre contribution. Avec la configuration ci-dessus, je suis en mesure de voir les erreurs dactylographiées dans la console. Mais toujours pas d'avertissements eslint. J'ai pu voir de nombreux avertissements de charpie en exécutant npm run lint . Ce serait une bien meilleure expérience si je pouvais voir les avertissements juste là dans la console comme nous en avons dans les projets de cra

Ceci est ma configuration actuelle.

const path = require('path')
module.exports = {
  plugins: ['scss', 'eslint'],
  modify(defaultConfig, { target, dev }, webpack) {
    const config = defaultConfig
    config.resolve.extensions.push('.ts', '.tsx')
    config.module.rules.push({
      test: /\.(ts|js)x?$/,
      exclude: /node_modules/,
      loader: 'babel-loader',
    })

    if (target === 'node' && !dev) {
      config.entry = path.resolve(__dirname, './src/server.tsx')
      config.output.filename = 'server.bundle.js'
      config.output.path = path.resolve(__dirname, './build')
      config.output.libraryTarget = 'commonjs2'
    }
    return config
  }
}

Tslint est obsolète pour ESLint dans le courant de 2019, et c'est un peu mi-novembre, donc razzle devrait probablement créer un plan pour passer à ESLint.

Enfin, j'ai réussi à obtenir à la fois les erreurs Typescript et les avertissements ESLint sur la console en utilisant la configuration ci-dessous.

const ForkTSCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin')
const path = require('path')

module.exports = {
  modify(defaultConfig, { target, dev }, webpack) {
    const config = defaultConfig
    config.resolve.extensions.push('.ts', '.tsx')
    config.plugins.push(
        new ForkTSCheckerWebpackPlugin({
          checkSyntacticErrors: true,
          eslint: true,
        }))
    config.module.rules.push({
      test: /\.(ts|js)x?$/,
      include: [path.resolve(__dirname, 'src')],
      loader: 'babel-loader',
    })
 }
}

Et j'ai mon fichier .eslintrc à la racine du projet avec un analyseur typographique

@ fifn2 @ aswin-s Le problème est que le plug-in Fork TS Checker Webpack utilisé par le razzle-plugin-typescript est ancien (v0.4.1) et ne prend pas en charge eslint. J'ai créé un PR pour mettre à jour le plugin # 1174

Ce PR est-il prêt à être utilisé?

@ imagine10255 ce n'est pas un PR, mais nous avons des plans pour cela

nous publierons une nouvelle version de razzle-plugin-eslint avec prise en charge du typographie dans quelques semaines

@ nimaa77 Merci,

@ nimaa77 une mise à jour? ou une façon d'aider?

C'est possible. Nous avons maintenant les discussions github activées. Veuillez déplacer ceci ici :) De plus, un nouveau plugin typographique utilisera eslint.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

ewolfe picture ewolfe  ·  4Commentaires

pseudo-su picture pseudo-su  ·  3Commentaires

dizzyn picture dizzyn  ·  3Commentaires

JacopKane picture JacopKane  ·  3Commentaires

panbanda picture panbanda  ·  5Commentaires