Código da aula 01 - Configurações de Babel/Webpack
- React: Biblioteca para construção de interfaces.
- react-dom: Integração do React com a DOM (Arvore de elementos).
- Babel: Conversor (Transpilador) de código Javascript moderno para versões compatíveis com navegadores e ambientes mais antigos.
- Webpack: Responsável por criar o bundle e "ensinar" ao Javascript como importar CSS, Imagens e outros arquivos (usando loaders).
- Webpack Dev Server: Responsável pelo Live Reload em ambiente de desenvolvimento.
Faz o pre-processamento dos arquivos e permite gerenciar arquivos que não são Javascript.
- babel-loader: Permite converter arquivos Javascript usando Babel.
- style-loader: Injeta o código CSS na DOM.
- css-loader: Responsável por ler o arquivo css e interpretar as importações.
- file-loader: Responsável por interpretar arquivos (por exemplo: imagens).
Conjunto de configurações criadas por terceiros que podemos reaproveitar nos nossos apps.
- preset-env: Responsável por converter o código do javascript mais moderno para um código mais antigo baseado no ambiente da aplicação.
- preset-react: Responsável por adicionar as funcionalidades do React na conversão.
# Inicie um projeto NodeJS
$ npm init -y
# ou
$ yarn init -y
# Instale as dependencias principais
$ npm install --save react react-dom
# ou
$ yarn add react react-dom
# Instale as dependencias do Babel
$ npm install --save @babel/core @babel/cli @babel/preset-env @babel/preset-react
# ou
$ yarn add @babel/core @babel/cli @babel/preset-env @babel/preset-react
# Instale as dependencias do Webpack
$ npm install --save webpack webpack-cli webpack-dev-server
# ou
$ yarn add webpack webpack-cli webpack-dev-server
# Instale os loaders do webpack
$ npm install --save babel-loader style-loader css-loader file-loader
# ou
$ yarn add babel-loader style-loader css-loader file-loader
# Execute a aplicação para ambiente de desenvolvimento
$ npm run webpack serve --mode development
# ou
$ yarn webpack serve --mode development
# Execute a aplicação para produção
$ npm run webpack --mode production
# ou
$ yarn webpack --mode production
module.exports = {
presets: [
'@babel/preset-env',
'@babel/preset-react'
]
}
const path = require('path')
module.exports = {
entry: path.resolve(__dirname, 'src', 'index.js'),
output: {
path: path.resolve(__dirname, 'public'),
filename: 'bundle.js'
},
devServer: {
contentBase: path.resolve(__dirname, 'public')
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader'
}
},
{
test: /\.css$/,
exclude: /node_modules/,
use: [
{ loader: 'style-loader' },
{ loader: 'css-loader' }
]
},
{
test: /.*\.(gif|png|jpe?g|svg$)/i,
use: {
loader: 'file-loader'
}
}
]
}
}