webpack React
React + webpack
Last post, I introduced how to use webpack. webpack Get Started
Next is build React app with webpack.
There are a lot of blogs to mention about it, some are quite complicated.
So I tried very simple one.
Install dependencies
React and webpack
npm install --save react react-dom npm install --save-dev webpack
babel
npm install --save-dev babel-loader babel-core npm install --save-dev babel-preset-react npm install --save-dev babel-preset-es2015
Project
project |- src | |- index.jsx |- index.html |-.babelrc |- webpack.config.js
.babelrc
Prepare babel setting(.babelrc
{
'presets': ['react', 'es2015']
}
webpack.config.js
module.exports = {
entry: './src/index.jsx',
output: {
path: './dist',
filename: 'bundle.js'
},
devtool: 'inline-source-map', /* source map */
module: {
loaders: [
{
test: /\.jsx$/, // Target files
exclude: /node_modules/, // excludes
loader: 'babel-loader'
}
]
}
};
index.html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>React and Webpack</title>
</head>
<body>
<div id="content"></div>
<script src="./dist/bundle.js"></script>
</body>
</html>
Import just only one bundle.js
index.jsx
var React = require('react');
var ReactDOM = require('react-dom');
// ES2015
// import React from 'react';
// import ReactDOM from 'react-dom';
var Hello = React.createClass({
render: function() {
return (
<div>Hello React and Webpack!</div>
);
}
});
ReactDOM.render(
<Hello/>,
document.getElementById("content")
);
build
webpack
build for production
Prepare another build setting for Production.
For production, we need more configuration, for example, uglify, compress etc…
Add webpac-production.config.js to your project.
Any name is O.K. we change config file from command
How to build
webpack --config webpack-production.config.js --progress
Add –config option to select config file.
If you want to run from npm, please add script description
package.json
{
"scripts": {
"build": "webpack --config webpack-production.config.js --progress"
}
}
