115 lines
4.7 KiB
Markdown
115 lines
4.7 KiB
Markdown
|
---
|
||
|
title: Running Webpack and Webpack Dev Server
|
||
|
---
|
||
|
The time has come to use Webpack. Because Webpack is installed globally, we can run the following in our terminal:
|
||
|
|
||
|
webpack
|
||
|
|
||
|
This will run our `webpack.config.js` file. It should run successfully, and we should see something like this appear in our terminal:
|
||
|
|
||
|
Hash: 2474b15611d8d75c5a39
|
||
|
Version: webpack 1.12.14
|
||
|
Time: 1721ms
|
||
|
Asset Size Chunks Chunk Names
|
||
|
bundle.js 679 kB 0 <a href='https://webpack.github.io/docs/webpack-dev-server.html' target='_blank' rel='nofollow'>emitted] main
|
||
|
+ 159 hidden modules
|
||
|
|
||
|
Notice that it refers to an `Asset` called `bundle.js`. Webpack is telling us that this file has been created when we ran the `webpack` command. Check out your `dist` folder, and you should see your `bundle.js` alongside your `index.html`.
|
||
|
|
||
|
Our tree will now look like this:
|
||
|
|
||
|
.
|
||
|
├── dist
|
||
|
| ├── bundle.js
|
||
|
│ └── index.html
|
||
|
├── node_modules
|
||
|
├── package.json
|
||
|
├── src
|
||
|
│ └── js
|
||
|
│ └── client.js
|
||
|
└── webpack.config.js
|
||
|
|
||
|
So now that we have a `dist/bundle.js`, our `dist/index.html` file is now referring to a file that exists! If we take a look at `bundle.js`, we'll see that it's a bundle of all the JavaScript files in our project. Cool!
|
||
|
|
||
|
Go ahead and search for some contents of our `dist/bundle.js`, like `This is one cool app!`. We can see its context in the file, it's within a weird looking method:
|
||
|
|
||
|
_createClass(Main, [{
|
||
|
key: 'render',
|
||
|
value: function render() {
|
||
|
return _react2.default.createElement(
|
||
|
'div',
|
||
|
null,
|
||
|
_react2.default.createElement(
|
||
|
'h1',
|
||
|
null,
|
||
|
'This is one cool app!'
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
}]);
|
||
|
|
||
|
This is what Babel has done; it has converted the code to ES5 and bundled it among other JavaScript files - including all our Node Modules, of course. Now all our React files can refer to this bundle using ES6 `import` statements.
|
||
|
|
||
|
Finally, it's time to check out the app in a browser. For this, we are going to use Webpack Dev Server, which is a feature-rich tool to use for setting up a `localhost` server for developing purposes when using Webpack.
|
||
|
|
||
|
* [Help: More about Webpack Dev Server</a>
|
||
|
|
||
|
Go ahead and run:
|
||
|
|
||
|
webpack-dev-server --content-base dist
|
||
|
|
||
|
We need to include `--content-base dist` to specify a content base to Webpack Dev Server, so that it knows where to get files to serve; in this case, it's the `dist` folder, because that is the folder that we are using for **production** as opposed to the `src` folder, which we are using for *development**.
|
||
|
|
||
|
In our terminal, we should see something like the following:
|
||
|
|
||
|
http://localhost:8080/webpack-dev-server/
|
||
|
webpack result is served from /
|
||
|
content is served from /Code/react-webpack-example/dist
|
||
|
Hash: 2474b15611d8d75c5a39
|
||
|
Version: webpack 1.12.14
|
||
|
Time: 3738ms
|
||
|
|
||
|
Following that will be a very long list of all the files bundled into `dist/bundle.js` by Webpack. Amazing!
|
||
|
|
||
|
Now is the time to head to the URL provided by that `webpack-dev-server` command, `http://localhost:8080/`. We should see a page with an `h1` that reads:
|
||
|
|
||
|
This is one cool app!
|
||
|
|
||
|
Let's Check out your Elements pane of our Developer Tools. We should have the following:
|
||
|
|
||
|
<!DOCTYPE html>
|
||
|
<html lang="en">
|
||
|
<head>
|
||
|
<meta charset="UTF-8">
|
||
|
<title>React Webpack Example</title>
|
||
|
<style type="text/css"></style>
|
||
|
</head>
|
||
|
<body>
|
||
|
<!-- React app will be injected into the following `div` element: -->
|
||
|
<div id="app">
|
||
|
<div data-reactid=".0">
|
||
|
<h1 data-reactid=".0.0">This is one cool app!</h1>
|
||
|
</div>
|
||
|
</div>
|
||
|
<!-- Include bundled JavaScript: -->
|
||
|
<script src="bundle.js"></script>
|
||
|
</body>
|
||
|
</html>
|
||
|
|
||
|
If we this to what we wrote in `src/js/client.js`, we will see how React renders into the `dist/index.html`.
|
||
|
|
||
|
If you got this far, well done! Now you know how to set up a workspace using React, Webpack and ES6 code, which is awesome, and gives you the starting point for making impressive web apps using cutting edge technologies.
|
||
|
|
||
|
In the next tutorial we will cover some more advanced steps, including:
|
||
|
|
||
|
* Going into more detail with React
|
||
|
* Looking at some other cool features of Webpack, like compiling Sass files
|
||
|
* Using minification on our `dist/bundle.js`
|
||
|
|
||
|
#### More Information:
|
||
|
|
||
|
<a href="https://webpack.js.org/" target='blank' rel='nofollow'>Webpack website</a>
|
||
|
|
||
|
<a href="https://github.com/webpack/webpack" target='blank' rel='nofollow'>Webpack Github</a>
|
||
|
|
||
|
<a href="https://github.com/webpack/webpack-dev-server" target='blank' rel='nofollow'>webpack-dev-server Github</a>
|