React and webpack 4
Simple React and Webpack4 Sample
This article is written on 2018/03/25.
Goal
Create React sample with webpack4.
Use css and css loader, too.
Prepare Project
To prepare webpack and other related packages, try following commands.
npm init -y npm i webpack webpack-cli -D npm i webpack-dev-server -D npm i react react-dom -S npm i babel-core babel-loader babel-preset-env babel-preset-react -D npm i html-webpack-plugin -D npm i css-loader style-loader -D
We prepared react, babel, webpack, and loaders.
Project structure(final)
project |- dist |- node_modules |- .babelrc |- package.json |- webpack.config.js |- src |- index.css |- index.html |- index.js
npm additional command
To add build and run commands to npm package.json file.
"scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "webpack-dev-server --mode development --open", "build": "webpack --mode production" }
src
index.js
import React from "react"; import ReactDOM from "react-dom"; import './index.css'; const Index = () => { return <div className="hello">Hello React!</div>; }; ReactDOM.render(<Index />, document.getElementById("root") );
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>React and Webpack4</title> </head> <body> <section id="root"></section> </body> </html>
index.css
.hello { color: red; }
.babelrc
{ "presets": ["env", "react"] }
webpack.config.js
const HtmlWebPackPlugin = require("html-webpack-plugin"); const htmlPlugin = new HtmlWebPackPlugin({ template: "./src/index.html", filename: "./index.html" }); module.exports = { module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: { loader: "babel-loader" } }, { test: /\.css$/, use: ["style-loader", "css-loader"] } ] }, plugins: [htmlPlugin] };
Build and run
npm run start