Recomendamos criar uma issue para trazer a sugestão e estimular conversas.
Note que temos um Código de Conduta. Por favor, siga as suas regras em todas as interações com as pessoas, documentação, código e discussões do projeto.
-
Uma pessoa de uma squad puxa um card no nosso board (no card vai ter a especificação do que precisa ser implementado, como as variantes, propriedades, e os critérios de aceitação);
-
A gente cria uma PR no GitHub com o nome do card, e lá a pessoa (ou o grupo de pessoas) da squad pode ir codando e enviando as alterações. Sempre tem uma pipeline rodando pra conferir se tem testes, se não tem problemas de código, etc.;
-
Uma vez pronto, o código passa por validação (code review) e o componente passa por validação visual (usando as histórias que forem criadas no Storybook). A gente vai acompanhando as pessoas desenvolvedoras à medida que sugerimos ajustes, até a aprovação;
-
Quando tudo estiver OK, o código é integrado com a branch principal, e é lançada uma nova versão do
natds-web
com o novo componente.
Garanta que o seu ambiente tenha o Node.js instalado.
Recomendamos pelo menos a versão 10.16.3
do Node.js. Idealmente, prefira versões superiores a 12.17.0
.
Utilizamos o recurso de Espaços de Trabalho (Workspaces) do Yarn.
Por isso, é essencial instalar o yarn
globalmente.
Recomendamos pelo menos a versão 1.19.1
. Idealmente, prefira versões superiores a 1.22.4
.
Como utilizamos lerna
para gerenciar o versionamento dos pacotes do monorepo.
Estes são os pacotes atuais do projeto:
packages/styles
: Biblioteca com tema e estilos do Design System para a web;packages/web
: Biblioteca de componentes para a web.
Estas recomendações são válidas apenas para pessoas contribuidoras da organização Natura.
Se este não é o seu caso, realize um fork do repositório para propor melhorias.
Contribuições com o Design System devem ser criadas a partir de uma branch no formato DSY-0000
.
O nome da branch será o código de uma tarefa do JIRA que representa essa contribuição.
Isso é válido para novas features, hotfixes e melhorias na documentação.
Para obter um código de tarefa do JIRA, basta procurar a squad de Design System no Slack ou Teams.
Utilizamos o Jenkins como pipeline de integração contínua. É responsabilidade do Jenkins realizar o teste e bumping de versões dos pacotes.
Atualmente, novos releases só são publicados quando realizamos um merge para o branch principal.
O que aconteceu com os branches de feature e milestone?
Antes de 20 de junho de 2020, utilizávamos os padrões ^feature/(.+)$
para feature branches
e ^v\d+.\d+.\d+$
para milestone branches, bem como hotfix/
e docs/
.
Abandonamos este formato antigo em favor de utilizarmos CI/CD, garantindo um fluxo mais enxuto. Por isso, desde essa data, a pipeline ignora branches nesse formato.
Além disso, o novo formato viabiliza a possibilidade de, em breve, permitirmos que pushes para branches no formato DSY-000
gerem pre-releases,
o que facilitaria o teste e validação das contribuições.
Quando um pull request é aberto, a pipeline do Jenkins se encarrega de gerar uma nova versão do storybook. Quando isso acontecer, inclua a url
gerada à card no board do Jira, no campo Link para validação funcional
A
url
gerada será algo comohttps://storybook-web.natura.com.br/[SUA-BRANCH]/index.html
Clone o repositório no seu ambiente de desenvolvimento:
$ git clone https://github.com/natura-cosmeticos/natds-js
Navegue até o diretório do repositório recém-clonado e faça o checkout para a sua branch:
$ cd natds-js
$ git checkout DSY-000 # sendo DSY-000 o nome do seu branch
Por fim, faça a instalação das dependências e um build inicial, para garantir que está tudo pronto:
$ yarn
$ yarn build:libs
Use o eslint
para verificar se o seu código está de acordo com o code style:
yarn lint
Como muitos dos nossos componentes são wrappers de outros já testados, usamos muitos testes de snapshot. Quaisquer linhas adicionais de código escritas dentro dos próprios componentes precisam ter 100% de cobertura de teste.
Use o jest
para verificar se os testes passam:
yarn test
Consulte a seção scripts
no arquivo package.json
para conferir a lista completa de tarefas disponíveis.
Os nossos componentes e temas utilizam o Material UI como base.
Os temas são criados na biblioteca @naturacosmeticos/natds-styles
.
Esse pacote realiza um parse dos temas do Material UI.
Qualquer alteração no contrato do tema ou componentes existentes deve ser comunicada ao time Design System. Assim, iremos avaliar se a alteração é aplicável, e se não causa breaking changes.
Em vez de utilizar git commit
, por favor, use este comando:
$ yarn commit
Este comando aciona o Commitizen, já instalado no projeto, que lhe ajudará na criação de uma mensagem de commit.
Os commits serão ser feitos no formato Conventional Commits. Graças a esse formato, é possível definir se a próxima versão será um patch, minor ou major release.
A partir de 20 de junho de 2020, commits feitos fora deste formato poderão ser recusados.
Ao criar um pull request, não se esqueça de:
- Documentar, na descrição do pull request, se houve alguma modificação nas dependências do projeto;
- Informar, também na descrição do pull request, quais mudanças foram realizadas;
- Atualizar o README.md, caso haja mudanças que afetem a instalação ou utilização da biblioteca;
Um pull request só será mesclado com a branch principal se:
- O código foi aprovado por pelo menos duas pessoas contribuidoras;
- As alterações passam em todos os checks, incluindo:
- Codecov: a cobertura de 100% deve ser mantida;
- Commitlint: todas as mensagens de commit seguem o Conventional Commits;
- Mergeable: as alterações e a descrição do pull request não ferem nenhuma das políticas do Mergeable;
- Travis CI: nenhum build quebrou e todos os testes passaram;
- Typo CI: não há nenhum typo que prejudique o entendimento ou leitura do código;
- Snyk: não há versões obsoletas ou com vulnerabilidades conhecidas;
Quando o seu branch for mesclado com a branch principal, uma nova versão das bibliotecas deste projeto será lançada.
Esperamos que todas as pessoas contribuidoras leiam o nosso Código de Conduta, inspirado no Contributor Convenant.
Bom trabalho!