He añadido razzle-eslint-plugin y lo he incluido en mi razzle.config.js como
plugins: ['scss', 'eslint']
El problema es que la consola no muestra ninguna advertencia de pelusa para los archivos mecanografiados. Si ejecuto eslint manualmente desde la consola, podría ver los errores de lint, pero no mientras ejecuto razzle start
Al verificar razzle-eslint-plugin
source, pude ver que las reglas mencionan solo los archivos js y jsx que se deben verificar como se muestra a continuación
config.module.rules = [
{
test: /\.(js|jsx|mjs)$/,
enforce: 'pre',
loader: require.resolve('eslint-loader'),
options: mainEslintOptions,
exclude: /node_modules/,
},
...config.module.rules,
]
Si agrego ts|tsx
a la configuración anterior, podría ver las advertencias de inmediato. Pero requiere editar manualmente el archivo unde node_modules
que me gustaría evitar. ¿Hay alguna manera de extender la configuración de razzle.config.js? Intenté presionar una nueva regla a través de module.rules.push
pero resultó en un error These relative modules were not found:
Si esto necesita agregarse a razzle-eslint-plugin
, podría aumentar un PR. Por favor recomiende
He configurado en mi archivo razzle.config.js
la siguiente configuración:
'use strict'
module.exports = {
plugins: [
{
name: 'typescript',
options: {
useBabel: true,
useEslint: true,
forkTsChecker: {
tsconfig: './tsconfig.json',
tslint: undefined,
watch: './src',
typeCheck: true
}
}
}
]
}
y luego .eslintrc.json
siguiente manera
{
"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"]
}
}
}
}
y luego en mi package.json
la siguiente fila para realizar el linting:
"lint": "eslint --ext 'js,jsx,ts,tsx' .",
@andersnylund Gracias por tu aporte. Con la configuración anterior, puedo ver errores mecanografiados en la consola. Pero todavía no hay advertencias eslint. Pude ver muchas advertencias de pelusa al ejecutar npm run lint
. Sería una experiencia mucho mejor si pudiera ver las advertencias allí mismo en la consola, como las tenemos en los proyectos de cra.
Esta es mi configuración actual.
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 dejará de estar disponible para ESLint en algún momento de 2019, y es a mediados de noviembre, por lo que Razzle probablemente debería crear un plan para cambiar a ESLint.
Finalmente, logré obtener errores de Typecript y advertencias de ESLint en la consola usando la siguiente configuración.
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',
})
}
}
Y tengo mi archivo .eslintrc
en la raíz del proyecto con el analizador mecanografiado
@ Fifn2 @ aswin-s El problema es que el plugin Fork TS Checker Webpack que usa razzle-plugin-typescript es antiguo (v0.4.1) y no es compatible con eslint. Creé un PR para actualizar el complemento en # 1174
¿Este PR está listo para usar?
@ imagine10255 esto no es un PR, pero tenemos planes para esto
lanzaremos una nueva versión de razzle-plugin-eslint
con soporte de mecanografiado en un par de semanas
@ nimaa77 Gracias, actualmente estoy integrando mecanografiado, ¿hay alguna forma de usarlo primero?
@ nimaa77 alguna actualización? o alguna forma de ayudar?
Esto es posible. Tenemos las discusiones de github habilitadas ahora. Mueva esto allí :) También el nuevo plugin de mecanografiado usará eslint.
Comentario más útil
Tslint dejará de estar disponible para ESLint en algún momento de 2019, y es a mediados de noviembre, por lo que Razzle probablemente debería crear un plan para cambiar a ESLint.