Usando Sass com Create React App (sem ejetar)
javascript • react • sassA maneira mais fácil de iniciar um projeto com React é usando a ferramenta oficial que o Facebook criou, para nos dar um boilerplate inicial para qualquer projeto com react. Sim, estou falando do Create React App.
Para iniciar nosso projeto, só precisamos instalar o Create react app:
Criar o nosso projeto:
E então rodamos nosso projeto e começamos a brincadeira:
O problema
Como queremos usar Sass em seu projeto react, existem 2 maneiras comuns para fazer isso:
1 - Criar uma task separada para compilar o Sass para CSS
Instalar o Sass, executar uma conversão para o CSS e incluir o CSS no aplicativo React. Este é um processo simples, pois o sass é uma gem do Ruby, porém é preciso executar um processo separado para fazer a conversão, paralelamente ao processo que está rodando o aplicativo React.
2 - Ejetando seu React app
O processo de “Ejetar”, remove parte da “mágica” do Create react app
, revelando as configurações, scripts de criação e as dependências. Com isso, eles são movidos para dentro do projeto.
Isso é ótimo para desenvolvedores avançados, e quando precisamos customizar algumas tasks do Webpack permite uma melhor personalização, mas para iniciantes acaba sendo mais confuso.
Mas então, como faremos isso sem ejetar nosso app e sem rodar uma task paralela?
..você não é obrigado a usar nada. Pense e use se fizer sentido.
Usando Sass no meu projeto
Felizmente esse problema é bem fácil de ser resolvido. Primeiro, vamos instalar a interface de linha de comando do Sass.
Para isso vamos instalar o node-sass-chokidar
como dependência do nosso projeto:
O node-sass-chokidar
, é um pequeno wrapper em torno do executável node-sass, que usa o chokidar em vez de Gaze ao monitorar alterações nos arquivos. A funcionalidade é a mesma do node-sass, sendo a única diferença o chokidar em vez do Gaze para a visualização de arquivos.
No nosso package.json
, vamos adicionar as seguintes linhas em “scripts”:
Then in package.json, add the following lines to scripts:
Dica: Caso queira utilizar um pré-processador diferente, apenas altere as tasks build:sass e watch:sass de acordo com a documentação do pré-processador.
Agora você pode renomear o App.css
para App.scss
e rodar o comando npm run watch:sass
. Ele irá encontrar e monitorar qualquer arquivo Sass em qualquer subpasta da pasta src, e gerar um CSS correspondente na mesma pasta do .scss
.
Se seu arquivo App.css
continua sendo importado dentro do arquivo App.js
. Você pode editar o arquivo App.scss
, e o App.css
será gerado automaticamente.
Para usar variáveis entre arquivos Sass, você pode usar imports.
Por exemplo, o arquivo App.scss
pode importar @import "./shared.scss";
com as definições das variáveis. Para habilitar imports sem usar os caminhos relativos, é só adicionar a opção --include-path
no comando em seu package.json
;
Tudo bonito, tudo funcionando, mas ainda tenho que rodar uma task separada para gerar os arquivos CSS.
Para resolver isso vamos alterar nossa task de start no nosso package.json
:
Agora, toda vez que rodarmos nosso projeto, os arquivos Sass vão ser compilados, e Sass irá monitorar qualquer alteração nos arquivos e gerar novamente e o nosso script do create react app também continuará rodando.
Conclusão
Um post curto hoje que tem como meta facilitar nossa vida, mas lembre-se, você não é obrigado a usar nada. Pense e use se fizer sentido.
Até mais e obrigado pelos peixes.
Comentários