DEV Community

Jhony Walker
Jhony Walker

Posted on

Stylelint - O que é isso?

stylelint

Stylelint é o linter do CSS, ele funciona analisando seu CSS e avisando se alguma regra configurada for violada. Essas regras podem detectar erros CSS e impor convenções de estilo, é bem semelhante à verificação ortográfica e gramatical do Google Docs ou do Microsoft Word - tornando assim essencialmente, um revisor automático para seu CSS!

O Stylelint executa um arquivo de configuração chamado .stylelintrc.json. Este arquivo de configuração é dividido em regras , plug-ins e extensões .

Começando com as Regras

As regras definem o que o Stylelint procurará em seu código. Eles são definidos na rules seção da configuração como pares de valores-chave. A chave é a regra e o valor alterna a regra e define as opções. Habilitar uma regra depende da própria regra - algumas regras podem ser tão simples quanto definir o valor para true outros têm a capacidade de sintonizar diretamente por meio de uma palavra-chave, como exemplificado abaixo:

module.exports = { rules: { 'declaration-no-important': true, 'color-hex-case': 'upper', }, }; 
Enter fullscreen mode Exit fullscreen mode

Algumas regras também permitem personalizá-lo ainda mais com opções de configuração adicionais. Nesse caso, a opção principal e as configurações adicionais são uma matriz.

module.exports = { rules: { 'font-weight-notation': ['numeric', { ignore: ['relative'] }], }, }; 
Enter fullscreen mode Exit fullscreen mode

Desativar é muito mais simples - basta definir o valor como null

module.exports = { rules: { 'comment-no-empty': null, }, }; 
Enter fullscreen mode Exit fullscreen mode

Que tal uns plugins?

O Stylelint nativamente fornece quase 200 regras, mas essas regras não cobrem tudo. É aqui que entram os plugins - eles permitem que os desenvolvedores criem regras que você pode habilitar em sua configuração. Estes são alguns exemplos de plugins Stylelint:

  • Stylelint a11y - Usado para regras de acessibilidade
  • Stylelint SCSS - Como próprio nome já entrega sua funcionalidade... utilizado para regras de utilização do SCSS
  • Stylelint CSS - Utilizando para ordenação do CSS

Para integrar, defina esses plug-ins na plugins seção de configuração. Então você pode usar as regras do plugin na rules seção.

module.exports = { plugins: [ 'stylelint-a11y', ], regras: { "a11y / no-outline-none": true, }, }; 
Enter fullscreen mode Exit fullscreen mode

Extensões

Com tantas regras nativas e plug-ins contribuindo com ainda mais regras, as extensões Stylelint tornam-nas mais consumíveis, então você não está puxando o cabelo tentando entendê-las todas. Por meio de extensões, você herda os plug-ins e as regras para que não precise fazer isso sozinho. Aqui estão alguns exemplos de extensões Stylelint:

As extensões são definidas na extensions seção da configuração.

module.exports = { extends: [ 'stylelint-config-standard', 'stylelint-config-recommended-scss', 'stylelint-a11y / recomendado', ], }; 
Enter fullscreen mode Exit fullscreen mode

Substituindo e Desativando

Mas o uso de extensões produz um efeito colateral, e você acaba concordando com eles se não observar... mas e se houver algumas regras que você preferisse ajustar ou desativar completamente? É aqui que entra a substituição e a desativação. Suas próprias regras definidas terão precedência e substituirão as regras da extensão.

module.exports = { extends: [ 'stylelint-config-standard', ], rules: { 'color-hex-case': 'upper', 'length-zero-no-unit': null, }, }; 
Enter fullscreen mode Exit fullscreen mode

Mesmo se você tentar o seu melhor para cumprir uma regra, pode haver casos em que a regra não funcionará. Para impedir que o Stylelint falhe, você pode desabilitar temporariamente o Stylelint para linhas específicas com comentários dá seguinte forma:

  • /* stylelint-disable */ - Desativa Stylelint para todas as linhas abaixo até ser reativado com /* stylelint-enable */

  • /* stylelint-disable-line */ - Desativa Stylelint apenas para a linha atual.

  • /* stylelint-disable-next-line */ - Desativa Stylelint apenas para a próxima linha.

Você também pode especificar regras específicas (separadas por vírgula) após o comentário de desabilitação para desabilitar algumas regras, em vez de desabilitar todas.

div { /* stylelint-disable-next-line value-no-vendor-prefix */ display: -webkit-flex; justify-content: center; align-items: center; font-size: 12px !important; /* stylelint-disable-line declaration-no-important */ /* stylelint-disable */ :focus { outline: none; } /* stylelint-enable */ } 
Enter fullscreen mode Exit fullscreen mode

Eles devem ser usados ​​com moderação, então, se você desabilita constantemente essas regras, considere desligá-las permanentemente.

CSS em JS

Se você estiver usando CSS popular em estruturas JS, como Emotion ou Styled Components , ainda será capaz de lintar seu CSS após um pouco de configuração extra. O stylelint-processor-styled-components processador extrairá os estilos de Emotion ou Styled Components para que o Stylelint possa soltá-los. Além disso, certas regras são incompatíveis com essas estruturas, portanto, devem ser desativadas usando stylelint-config-styled-components.

module.exports = { extends: ['stylelint-config-styled-components'], processors: ['stylelint-processor-styled-components'], }; 
Enter fullscreen mode Exit fullscreen mode

Múltiplas configurações

Se você estiver usando várias estruturas CSS, pode ser necessário ter várias configurações, cada uma direcionada a uma estrutura específica. Por exemplo, se você estiver usando vanilla CSS (uai não sabia que existia?) e componentes estilizados, precisará de uma configuração para cada um, devido às diferenças entre as duas configurações.

module.exports = { extends: [ 'stylelint-config-standard', 'stylelint-a11y/recommended' ], }; // stylelint.styled.config.js module.exports = { extends: [ './stylelint.config.js', 'stylelint-config-styled-components' ], processors: ['stylelint-processor-styled-components'], }; 
Enter fullscreen mode Exit fullscreen mode

Dica rápida: você pode estender suas configurações umas às outras para que não precise definir as mesmas regras, extensões de plug-ins novamente!

Executando

Para executar o Stylelint (com várias configurações), adicione os seguintes aliases a package.json.

{ "scripts": { "lint:js": "stylelint '{**/*,*}.js' --config stylelint.styled.config.js", "lint:css": "stylelint '{**/*,*}.css'", "lint:css:fix": "stylelint '{**/*,*}.css' --fix" }, } 
Enter fullscreen mode Exit fullscreen mode

npm run lint:js(ou yarn run lint:js) executará Stylelint em componentes estilizados (arquivos com .jsextensão) e npm run lint:css (ou yarn run lint:css) executará Stylelint em vanilla CSS (arquivos com .css extensão). Além disso, o Stylelint suporta correção automática para que você possa executar npm run lint:css:fix (ou yarn run lint:css:fix) e qualquer violação do Stylelint que possa ser corrigida automaticamente. Infelizmente, a correção automática não é suportada quando você usa processadores exigidos pelos componentes estilizados.

Stylelint é o complemento perfeito para ESLint para impor e manter uma base de código de alta qualidade. Embora o Stylelint seja um pouco complicado de configurar inicialmente, quando estiver pronto, você pode confiar na qualidade e consistência do CSS. É apenas uma coisa a menos com que você precisa se preocupar para poder se concentrar na construção de um ótimo produto.

Fontes onde pesquisei esse conteúdo:

Top comments (0)