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> |