mkdir webpack-react && cd $_
$_ is a reference to the last argument to the previous command.
Initialize a new npm project:
npm init -y
This command will create package.json file in your directory. We pass the y option to skip the questions.
Create file src/index.html with following contents:
How to set up React, Webpack, and Babel
====== Step 2: Set Up Webpack ======
Install webpack, webpack-cli, webpack-dev-server, html-webpack-plugin and html-loader as dev dependencies:
npm i webpack webpack-dev-server html-webpack-plugin --save-dev
Here’s why they are needed:
* Nečíslovaný seznamwebpack is core dependency
* webpack-dev-server will allow us to run dev server
* html-webpack-plugin simplifies working with html files
Create webpack.config.js with following content:
const HtmlWebPackPlugin = require("html-webpack-plugin");
const path = require('path');
module.exports = {
entry: "./src/App.js",
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
},
plugins: [new HtmlWebPackPlugin({ template: "./src/index.html" })]
};
Add build and start commands to scripts section of package.json:
"scripts": {
"build": "webpack --mode production",
"start": "webpack-dev-server --open --mode development",
}
====== Step 3: Set Up Babel ======
Install Babel dependencies:
npm i @babel/core babel-loader @babel/preset-env @babel/preset-react --save-dev
We’ve installed babel and two presets here:
@babel/preset-react to compile JSX down to Javascript
@babel/preset-env to compile Javascript ES6 code down to ES5
Create .babelrc with following contents:
{
"presets": ["@babel/preset-env", "@babel/preset-react"]
}
Add babel-loader to your webpack configuration:
const HtmlWebPackPlugin = require("html-webpack-plugin");
const path = require('path');
module.exports = {
entry: "./src/App.js",
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
},
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
}
]
},
plugins: [new HtmlWebPackPlugin({ template: "./src/index.html" })]
};
====== Step 4: Set Up React ======
Install React dependencies:
npm i react react-dom
react - provides us with API to work with components
react-dom - allows to render to HTML DOM
Create file src/App.js with following code:
import React from "react"
import ReactDOM from "react-dom"
const App = () => (
<>
Hello React
Minimal React configuration.
>
)
ReactDOM.render( , document.getElementById("root"))
====== Step 5: Run The App ======
Start webpack-dev-server by running npm start:
npm start
It should open a browser window and you should see this:
{{:programovani:hello-app.png?400|}}