¿Alguna vez te has frustrado con nombres de funciones confusos o inconsistentes en tu código? En este artículo, vamos a resolver ese problema creando un plugin personalizado de ESLint para mantener el código limpio y legible, asegurando nombres de funciones consistentes.
Entonces, ¿qué es ESLint? Piensa en él como una herramienta útil que revisa tu código en busca de errores y asegura que sigas buenas prácticas de programación. ¿La parte genial? ¡Puedes crear tus propias reglas para adaptarse a tu estilo!
mkdir myplugin
cd myplugin
npm init --y
npx eslint --init
const plugin = {
meta: {
name: "func-prefix-matching",
version: "0.0.1",
},
rules: {}
};
rules
, crearemos nuestra regla. La clave es el ID de la regla y el valor es un objeto con una función create
.
const plugin = {
meta: {
name: "func-prefix-matching",
version: "0.0.1",
},
rules: {
prefix: {},
},
};
create
devuelve un objeto con un método Identifier
. En la función Identifier
, verificamos si el código es una función de flecha. Luego, nos aseguramos de que los nombres de las funciones comiencen con un prefijo específico, como "on" o "get", etc.
const rulePrefix = ["is", "pre", "on", "post", "get", "set"];
const isValidName = (name) => {
const isValid = (prefix) => name.indexOf(prefix) === 0;
return rulePrefix.some(isValid);
};
const plugin = {
meta: {
name: "func-prefix-matching",
version: "0.0.1",
},
rules: {
prefix: {
create(context) {
return {
Identifier: (node) => {
if (node.parent?.init?.type === "ArrowFunctionExpression") {
const { name } = node;
if (!isValidName(name)) {
context.report(
node,
`${name} debería empezar con ${rulePrefix.join(", ")}.`
);
}
}
},
};
},
},
},
};
context.report()
para marcarlo como un error.
context.report(node, `${name} debería empezar con ${rulePrefix.join(", ")}.`);
plugins
en nuestro archivo de configuración de ESLint.
import prefixMatcher from "./plugin/index.mjs";
export default [
{
files: ["src/**/*.js"],
plugins: { prefixMatcher },
},
];
rules
con el espacio de nombres que elijas.
import prefixMatcher from "./plugin/index.mjs";
export default [
{
files: ["src/**/*.js"],
plugins: { prefixMatcher },
rules: {
"prefixMatcher/prefix": "warn",
},
},
];
src
.
const someFunction = () => {
console.log("Hola Mundo");
};
someFunction();
npm run lint
en tu terminal para ver ESLint en acción.
npm run lint
Si todo está configurado correctamente, ESLint revisará tu código y mostrará mensajes de error para cualquier nombre de función que no siga las reglas.
1:7 warning someFunction debería empezar con is, pre, on, post, get, set prefixMatcher/prefix
✖ 1 problema (0 errores, 1 advertencia)
¡Gracias por leer! Espero que este artículo te ayude a crear tu propio plugin de ESLint para asegurar nombres de funciones consistentes en tu código. 👏
Jorge García
Fullstack developer