Quiero hacer algunas modificaciones menores a las reglas básicas de eslint, por ejemplo, array-bracket-newline o indent . Estas reglas a menudo dependen de las utilidades dentro de eslint , más comúnmente ast-utils . Hasta ahora, usé un complemento, agregué las reglas modificadas allí e hice un require('eslint/lib/rules/utils/ast-utils') , ya que eslint es una dependencia de pares de todos modos.
Desde https://github.com/eslint/eslint/commit/24c9f2ac57efcd699ca69695c82e51ce5742df7b , esto ya no es posible, ya que se agregó una directiva de exports al package.json . ¿Cuál es el método habitual para cambiar el comportamiento de las reglas básicas de eslint hoy en día?
eslint en su conjunto parece sucio, ya que hay muchas otras partes que dependen de él (desde los complementos de eslint, hasta las extensiones de vscode, yarn sdks, ...). Habría que cambiar cada uno, o usar algún cambio de nombre muy sucio, en el que el tenedor finge ser el original (accidente a punto de ocurrir).exports parece muy sucio.¿Hay alguna manera limpia?
Editar: mi mejor idea actual es bifurcar eslint , eliminar las exports y luego usar require('eslint-fork/lib/rules/utils/ast-utils') en la bifurcación. Esto significa que necesito una copia extra de eslint sin ninguna razón real, pero es para limpiar, y un poco de espacio en disco no es importante.
Es posible solicitar archivos no exportados por su ruta completa, es decir:
const { dirname, join } = require('path'); const astUtilsPath = join(dirname(require.resolve('eslint')), 'rules/utils/ast-utils.js'); const astUtils = require(astUtilsPath);Tenga en cuenta que este método se basa en que la exportación principal se encuentra en una carpeta de paquete particular ('lib' en el caso de eslint).