Razzle: Bagaimana cara menggunakan eslint dengan Typecript?

Dibuat pada 12 Nov 2019  ·  11Komentar  ·  Sumber: jaredpalmer/razzle

Saya telah menambahkan razzle-eslint-plugin dan telah memasukkannya ke dalam razzle.config.js saya

plugins: ['scss', 'eslint']

Masalahnya adalah konsol tidak menampilkan peringatan lint apa pun untuk file skrip ketikan. Jika saya menjalankan eslint secara manual dari konsol, saya dapat melihat kesalahan lint, tetapi tidak saat menjalankan razzle start

Saat memeriksa razzle-eslint-plugin source saya dapat melihat bahwa aturan hanya menyebutkan file js & jsx yang akan diperiksa seperti yang ditunjukkan di bawah ini

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

Jika saya menambahkan ts|tsx ke konfigurasi di atas, saya dapat segera melihat peringatannya. Tetapi itu membutuhkan pengeditan file secara manual unde node_modules yang ingin saya hindari. Apakah ada cara untuk memperpanjang konfigurasi dari razzle.config.js? Saya mencoba mendorong aturan baru melalui module.rules.push tetapi menghasilkan kesalahan These relative modules were not found:

Jika ini perlu ditambahkan ke razzle-eslint-plugin saya bisa mengumpulkan PR. Mohon saran

question stale

Komentar yang paling membantu

Tslint sudah tidak digunakan lagi untuk ESLint sekitar tahun 2019, dan ini agak pertengahan November, jadi mungkin harus membuat rencana untuk beralih ke ESLint.

Semua 11 komentar

Saya telah menetapkan dalam file razzle.config.js pengaturan berikut:

'use strict'

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

dan kemudian .eslintrc.json sebagai berikut

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

dan kemudian di baris package.json , baris berikut untuk melakukan linting:

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

@andersnylund Terima kasih atas masukan Anda. Dengan konfigurasi di atas, saya dapat melihat kesalahan skrip ketikan di konsol. Tapi tetap tidak ada peringatan eslint. Saya bisa melihat banyak peringatan lint dengan menjalankan npm run lint . Akan menjadi pengalaman yang jauh lebih baik jika saya bisa melihat peringatan di konsol seperti yang kami miliki di proyek cra

Ini adalah konfigurasi saya saat ini.

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 sudah tidak digunakan lagi untuk ESLint sekitar tahun 2019, dan ini agak pertengahan November, jadi mungkin harus membuat rencana untuk beralih ke ESLint.

Akhirnya, saya berhasil mendapatkan kedua kesalahan Ketikan & peringatan ESLint di konsol menggunakan konfigurasi di bawah ini.

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',
    })
 }
}

Dan saya memiliki file .eslintrc di root proyek dengan pengurai skrip

@ fifn2 @ aswin-s Masalahnya adalah bahwa Fork TS Checker Webpack Plugin yang digunakan oleh razzle-plugin-typescript sudah lama (v0.4.1) dan tidak mendukung eslint. Saya telah membuat PR untuk memperbarui plugin di # 1174

Apakah PR ini siap digunakan?

@ Imagine10255 ini bukan PR, tapi kami punya rencana untuk ini

kami akan merilis versi baru razzle-plugin-eslint dengan dukungan naskah ketikan dalam beberapa minggu

@ nimaa77 Terima kasih, saat ini saya sedang mengintegrasikan skrip ketikan, apakah ada cara untuk menggunakannya terlebih dahulu?

@ nimaa77 ada pembaruan? atau cara apa pun untuk membantu?

Ini mungkin. Kami telah mengaktifkan diskusi github sekarang. Harap pindahkan ini ke sana :) Juga plugin ketikan baru akan menggunakan eslint.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

ewolfe picture ewolfe  ·  4Komentar

charlie632 picture charlie632  ·  4Komentar

gabimor picture gabimor  ·  3Komentar

howardya picture howardya  ·  5Komentar

piersolenski picture piersolenski  ·  4Komentar