Skip to content

📚 Commented project in portuguese, for studying purposes

Notifications You must be signed in to change notification settings

gabrielgodoy-zz/learning-react-redux

Repository files navigation

React + Redux boilerplate (documentation in portuguese)


Trabalhando com essa estrutura

npm install ou yarn install instala as dependências

Para instalar o yarn no Mac brew install yarn

npm start inicia o projeto na porta 3000

npm run lint to report errors in JS and SCSS code style

npm run build to generate ./dist folder for production

npm test Roda os casos de teste feitos com Mocha, Chai e Sinon

npm run test:watch Roda os testes em modo --watch


Padrão de código

Dependência Prettier desativada, ainda em estudo:


Framework

  • React React isomórfico (Pode rodar no client e no servidor)

    • react-dom React específico para o DOM do browser
  • prop-types adiciona checagem de tipo para props do React


Incrementos ao React

  • redux é um container de estado para apps em JS

  • reselect serve para guardar dados que foram processados através de funções selectors, para que não sejam processados novamente. Com a técnica de memoization.

  • react-router v4 O core do React router

  • react-helmet é um administrador do header do documento para React

  • react-transition-group permite animações quando um componente entra ou sai do DOM


Estilo

node-sass converte o SCSS para CSS usando o compilador libsass autoprefixer analisa o CSS e adiciona prefixos para browsers específicos normalize.css Uma alternativa aos resets de CSS sass-mq simplifica o trabalho com @media queries


Teste e cobertura

  • Mocha é um framework de teste

  • Chai para asserções dentro do Mocha

  • Sinon para a criação de spies, stubs e mocks

  • react-test-utils é uma helper library que facilita a testagem de componentes React em qualquer framework de teste

  • enzyme é uma abstração para o React Test Utils, e usa JSDOM por baixo dos panos

  • jsdom DOM virtual em memória

  • Istanbul para checar a cobertura de testes

    • NYC é a linha de comando para o instanbul
  • redux-mock-store Serve para criar uma Store fake para testagem de criadores de ação assíncronos e middlewares do Redux

  • moxios Mock Axios for unit testing

  • mock-local-storage LocalStorage fake para rodar testes unitários

Ferramentas em avaliação:

  • plato Analisa a complexidade da funções

Regras do teste

O limite mínimo de cobertura de código é 80% nos seguintes aspectos:

  • Statements > 80%
  • Branches > 80%
  • Funções > 80%
  • Linhas > 80%

Se a cobertura for menor que isso, o commit e o push serão rejeitados


Transpilador e Module Bundler

Webpack loaders

  • babel-loader Permite usar Babel integrado ao Webpack
  • css-loader interpreta @import e url() como requires para o Webpack
  • dsv-loader possibilita o carregamento de arquivos dsv (e.g. .csv or .tsv)
  • eslint-loader é o loader do ESLint para Webpack
  • file-loader pode carregar qualquer tipo de arquivo
  • html-loader exporta HTML como string. HTML é minificado quando o compilador demanda
  • import-glob-loader expande padrões de globbing para imports de SCSS
  • imports-loader permite o uso de módulos que dependem de variáveis globais específicas como "jQuery"
  • postcss-loader PostCSS loader para processar o CSS com plugins de PostCSS como o autoprefixer
  • react-hot-loader Hot reload específico para React
  • sass-loader compila Sass para CSS
  • sass-resources-loader compartilha variáveis e mixins em todos os arquivos sem ter que fazer @import
  • style-loader adiciona CSS ao DOM injetando uma tag <style>
  • url-loader funciona como o file loader, mas retorna o arquivo em DataUrl se ele for menor que um limite de bytes definido

Plugins para o Webpack


Transpilador de JS

  • babel-core O compilador core do Babel
  • babel-cli Babel na linha de comando
  • babel-polyfill série de polyfills para utilizar Promises, Object.assign e outras features com suporte aos browsers modernos *babel-register Permite usar o babel via require('babel-register')

Presets e plugins para o Babel


Outras ferramentas

  • npm-run-all Uma ferramenta de linha de comando para executar múltiplos scripts npm em paralelo ou de forma sequencial
  • axios Faz requests HTTP baseado em Promises, para uso no browser e node.js
  • moment analisa, valida, manipula e exibe datas em JS
  • lodash biblioteca com um conjunto de helpers para operações rotineiras em JS
  • exif-js lê os metadados EXIF de uma imagem

About

📚 Commented project in portuguese, for studying purposes

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published