Criando do Zero
Configurações iniciais
Babel
Como o javascript evolui muito rapidamente, os navegadores não conseguem acompanhar o ritmo. Com isso, o babel possibilita um pré-processamento do código e o converte para uma forma em que até os navegadores mais antigos possam entendê-lo.
Resumo: Converter (transpilar) código do React para um código que o browser entenda
Instalação do React
$ yarn add react react-dom
Instalação do Babel e Webpack
$ yarn add @babel/core @babel/preset-env @babel/preset-react webpack webpack-cli
Arquivo babel.config.js
Este arquivo deve estar na raiz do seu projeto.
module.exports = {presets: ["@babel/preset-env","@babel/preset-react",],}
Instalar o babel-loader como dependência:
$ yarn add babel-loader
Arquivo public/index.html
Importação do arquivo bundle.js
<script src="./bundle.js"></script>
WebPack Server
Webpack é um serviço que nos permite trabalhar com vários arquivos em uma mesma aplicação usando import/export. No modo desenvolvimento também permite live reload, ou seja atualização automatica das alterações.
Resumo: Pra cada tipo de arquivo (.js, .css, .png) irá converter o código de uma maneira diferente
Arquivo webpack.config.js
Este arquivo deve estar na raiz do seu projeto.
const path = require('path');module.exports = {entry: path.resolve(__dirname, 'src', 'index.js'),output: {path: path.resolve(__dirname, 'public'),filename: 'bundle.js',},module: {rules: [{test: /\.js$/,exclude: /node_modules/,use: {loader: 'babel-loader',}}]}};
Webpack Dev Server
Instalar o pacote $ yarn add webpack-dev-server -D
Arquivo webpack.config.js
Inserir o comando devServer
:
devServer: {contentBase: path.resolve(__dirname, 'public'),},
Arquivo package.json
Inserir o script para o build da aplicação:
{"scripts": {"build": "webpack --mode development","dev": "webpack-dev-server --mode development"},}
Compilando CSS
$ yarn add style-loader css-loader
Arquivo webpack.config.js
Criar uma nova rule:
{test: /\.css$/,use: [{ loader: 'style-loader' },{ loader: 'css-loader' },]}
Importação de imagens
$ yarn add file-loader -D
Arquivo webpack.config.js
Criar uma nova rule:
{test: /\.*\.(gif|png|jpe?g)$/i,use: {loader: 'file-loader'}}
Uso de estados da aplicação
Necessita da dependência $ yarn add @babel/plugin-proposal-class-properties -D
Arquivo babel.config.js
Adicionar os plugins:
plugins: ['@babel/plugin-proposal-class-properties']
Arquivo src/index.js
Geralmente possui a arquitetura abaixo.
import React from 'react';import { render } from 'react-dom'import App from './App';render(<App />, document.getElementById('app'));
Arquivo src/App.js
É o componente que renderizará a aplicação. Exemplo:
import React from 'react';import './App.css';import TechList from './components/TechList';function App() {return <TechList />}export default App;