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:

Discussion (0)