no-banned-imports
Previne o uso de bibliotecas banidas e impoe alternativas recomendadas.
Detalhes da regra
Seção intitulada “Detalhes da regra”Equipes frequentemente banem bibliotecas pesadas ou depreciadas em favor de alternativas mais leves ou nativas. Esta regra usa uma configuracao orientada a dados — um array de objetos especificando o padrao regex, o nome da biblioteca e a alternativa recomendada. Adicionar um novo banimento e uma alteracao de uma linha.
Exemplos de codigo incorreto
Seção intitulada “Exemplos de codigo incorreto”import { format } from "moment";import axios from "axios";Exemplos de codigo correto
Seção intitulada “Exemplos de codigo correto”import { format } from "date-fns";const response = await fetch("/api/data");Implementacao da regra
Seção intitulada “Implementacao da regra”/// <reference path="../rules.d.ts" />
const BANNED_IMPORTS = [ { pattern: /from\s+['"]lodash['"]/, name: "lodash", alternative: "native array methods", }, { pattern: /from\s+['"]moment['"]/, name: "moment", alternative: "Temporal API or date-fns", }, { pattern: /from\s+['"]axios['"]/, name: "axios", alternative: "native fetch()", },];
export default { rules: { "no-banned-imports": { description: "Prevent usage of banned libraries", async check(ctx) { for (const banned of BANNED_IMPORTS) { const matches = await ctx.grepFiles(banned.pattern, "src/**/*.ts"); for (const match of matches) { ctx.report.violation({ message: `Banned import: "${banned.name}" is not allowed. Use ${banned.alternative} instead.`, file: match.file, line: match.line, fix: `Replace ${banned.name} with ${banned.alternative}`, }); } } }, }, },} satisfies RuleSet;Quando usar
Seção intitulada “Quando usar”Quando sua equipe padronizou bibliotecas especificas e deseja evitar a migracao para alternativas. Banimentos comuns incluem lodash (metodos nativos), moment (date-fns ou Temporal) e axios (fetch nativo).
Quando nao usar
Seção intitulada “Quando nao usar”Quando seu projeto nao tem preferencia entre bibliotecas, ou quando a biblioteca banida ainda esta em migracao ativa e algum uso e esperado temporariamente.