From bf7098537bd0b38de63e97b8a67c3846f43bac07 Mon Sep 17 00:00:00 2001 From: vikingmute Date: Wed, 10 Jan 2018 22:41:04 +0800 Subject: [PATCH] add new content and sample codes: webpack for production --- codes/part9/index.html | 8 ++ codes/part9/index.js | 16 ++++ codes/part9/package.json | 23 +++++ codes/part9/style.css | 3 + codes/part9/webpack.prod.js | 44 +++++++++ entries/newchapter-2.md | 180 +++++++++++++++++++++++++++++++++++- imgs/production-files.png | Bin 0 -> 44971 bytes imgs/react-project.png | Bin 0 -> 13135 bytes 8 files changed, 273 insertions(+), 1 deletion(-) create mode 100644 codes/part9/index.html create mode 100644 codes/part9/index.js create mode 100644 codes/part9/package.json create mode 100644 codes/part9/style.css create mode 100644 codes/part9/webpack.prod.js create mode 100644 imgs/production-files.png create mode 100644 imgs/react-project.png diff --git a/codes/part9/index.html b/codes/part9/index.html new file mode 100644 index 0000000..f409585 --- /dev/null +++ b/codes/part9/index.html @@ -0,0 +1,8 @@ + + + This is the example for Dynamic Imports + + + + + diff --git a/codes/part9/index.js b/codes/part9/index.js new file mode 100644 index 0000000..f14b98b --- /dev/null +++ b/codes/part9/index.js @@ -0,0 +1,16 @@ +import React from 'react' +import { render } from 'react-dom' +import './style.css' + +var container = document.body.appendChild( + document.createElement('div') +) + +var element = React.createElement( + 'h1', + null, + 'Hello, world!' +); + +render(element, container) + diff --git a/codes/part9/package.json b/codes/part9/package.json new file mode 100644 index 0000000..c1a3283 --- /dev/null +++ b/codes/part9/package.json @@ -0,0 +1,23 @@ +{ + "name": "part9", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "build": "webpack --config webpack.prod.js" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "css-loader": "^0.28.7", + "extract-text-webpack-plugin": "^3.0.2", + "html-webpack-plugin": "^2.30.1", + "style-loader": "^0.19.1", + "webpack": "^3.5.2" + }, + "dependencies": { + "react": "^16.2.0", + "react-dom": "^16.2.0" + } +} diff --git a/codes/part9/style.css b/codes/part9/style.css new file mode 100644 index 0000000..7936173 --- /dev/null +++ b/codes/part9/style.css @@ -0,0 +1,3 @@ +body { + background: yellow; +} diff --git a/codes/part9/webpack.prod.js b/codes/part9/webpack.prod.js new file mode 100644 index 0000000..1b60d7e --- /dev/null +++ b/codes/part9/webpack.prod.js @@ -0,0 +1,44 @@ +const HtmlWebpackPlugin = require('html-webpack-plugin'); //installed via npm +const ExtractTextPlugin = require("extract-text-webpack-plugin"); +const webpack = require('webpack'); //to access built-in plugins +const path = require('path'); + +module.exports = { + // 入口文件名称 + entry: { + index: './index.js', + vendor: ['react', 'react-dom'], + }, + // 输出文件名称 + output: { + path: path.resolve(__dirname, 'dist'), + filename: '[name].bundle.js', + }, + devtool: 'source-map', + module: { + rules: [ + { + test: /\.css$/, + use: ExtractTextPlugin.extract({ + fallback: "style-loader", + use: ['css-loader'] + }) + } + ] + }, + plugins: [ + new webpack.DefinePlugin({ + 'process.env.NODE_ENV': JSON.stringify('production') + }), + new webpack.optimize.UglifyJsPlugin({ + sourceMap: true + }), + new ExtractTextPlugin("styles.css"), + new webpack.optimize.CommonsChunkPlugin({ + name: "vendor" + }), + new HtmlWebpackPlugin({ + title: 'Test App', + }) + ] +} \ No newline at end of file diff --git a/entries/newchapter-2.md b/entries/newchapter-2.md index 3aa70df..c92ab07 100644 --- a/entries/newchapter-2.md +++ b/entries/newchapter-2.md @@ -163,7 +163,7 @@ module.exports = { ### 2.3 动态加载 ->>> 本节代码可以参见 /codes/part7/ +>>> 本节代码可以参见 /codes/part8/ 上面的例子中使用 code splitting 特性成功的将一个生成很大的文件分割成了多个小力度的文件,这样对于脚本的加载速度有所提高,但是还是在网页加载的时候通过 script 标签,大家都知道 script 脚本的加载会阻塞浏览器之后的工作,那么这里我们更进一步,webpack 支持动态(异步)加载资源。 @@ -257,3 +257,181 @@ module.exports = { } ``` + +### 2.5 生产环境 + +>>> 本节代码可以参见 /codes/part9/ + +之前我们了解了针对开发环境配置 webpack 的特性,包括 source map, 和之前提到的支持实时编译和 HMR 的本地服务器。那么生产环境和开发环境的目的完全不同,生产环境最重要的目的就是生成文件的大小,在当今的网路时代,加载速度就是第一生命力,那么生成文件的大小是一个非常重要的因素。 + +既然是两个完全不同的目的,那么这里我们推荐使用两个不同的配置文件完成不同的任务。可以把开发环境的配置文件称为 webpack.dev.js, 生产环境称为 webpack.prod.js。 + +那这里的测试项目就稍微复杂一点,它由一个入口文件(index.js),一个样式文件(style.js),和两个个第三方依赖(React,react-dom)组成。 + +安装依赖: +```bash +npm install react react-dom --save +``` + + +然后写入口文件: +```javascript +// index.js +import React from 'react' +import { render } from 'react-dom' +import './style.css' + +var container = document.body.appendChild( + document.createElement('div') +) + +var element = React.createElement( + 'h1', + null, + 'Hello, world!' +); + +render(element, container) +``` +这里就是把一个简单的 React Element 渲染到一个 DOM 节点上,由于这里没有配置 Babel,我没有使用 JSX 也没有使用 ES2015 的语法。它最后生成的效果是这样的。 + +![React project](../imgs/react-project.png) + +开发环境的配置文件大家可以说是非常的熟悉,在这里再写一遍 + +```javascript +// webpack.dev.js +const HtmlWebpackPlugin = require('html-webpack-plugin'); //installed via npm +const webpack = require('webpack'); //to access built-in plugins + +module.exports = { + // 入口文件名称 + entry: './index.js', + // 输出文件名称 + output: { + filename: 'bundle.js' + }, + devtool: 'inline-source-map', + module: { + rules: [ + { test: /\.css$/, use: [ { loader: 'style-loader' }, { loader: 'css-loader' } ]} + ] + }, + plugins: [ + new webpack.HotModuleReplacementPlugin(), + new HtmlWebpackPlugin({ + title: 'Test App', + }) + ], + devServer: { + compress: true, + hot: true, + hotOnly: true, + } +} +``` +回顾一下前面的知识,这里针对开发环境添加了最直观的 inline-source-map,启用了 webpack-dev-server,并且添加了 HMR 的插件。 + +那么对比开发环境,针对生产环境的目的,我们对应一个全新的配置文件: + +```javascript +const HtmlWebpackPlugin = require('html-webpack-plugin'); //installed via npm +const ExtractTextPlugin = require("extract-text-webpack-plugin"); +const webpack = require('webpack'); //to access built-in plugins +const path = require('path'); + +module.exports = { + // 入口文件名称 + entry: { + index: './index.js', + vendor: ['react', 'react-dom'], + }, + // 输出文件名称 + output: { + path: path.resolve(__dirname, 'dist'), + filename: '[name].bundle.js', + }, + devtool: 'source-map', + module: { + rules: [ + { + test: /\.css$/, + use: ExtractTextPlugin.extract({ + fallback: "style-loader", + use: "css-loader" + }) + } + ] + }, + plugins: [ + new webpack.optimize.UglifyJsPlugin({ + sourceMap: true + }), + new ExtractTextPlugin("styles.css"), + new webpack.optimize.CommonsChunkPlugin({ + name: "vendor" + }), + new HtmlWebpackPlugin({ + title: 'Test App', + }) + ] +} +``` +我们发现上面的配置文件和开发环境的配置有很多不同,大约有这几点是为了生产环境的优化而做: +* vendor: ['react', 'react-dom'] 和 new webpack.optimize.CommonsChunkPlugin({name: "vendor"}) 将较大的第三方库单独的打成一个文件,这样有利于更快的加载,这是利用了之前所讲过的 code splitting 技术。 +* 使用 webpack.optimize.UglifyJsPlugin 来压缩生成的代码并且通过 tree shaking 技术来缩小生成文件的大小。 +* 使用 devtool: 'source-map', 我们希望在生成环境中也能有 sourceMap 来追踪错误以及便于调试代码,所以需要一个快速并且便捷的 sourceMap 类型, 这个配置会另外生成一个压缩版本的 map 文件,注意不要在生成环境使用 'inline-source-map' 这个配置,这样会大幅增加生成文件的大小。 +* 在之前一章 Loader 一节我们讲过 css 样式是通过 style-loader 动态通过 Javascript 插入到 head 中的,这种做法有两个弊端就是当 JS 文件没有加载完成的时候,页面会完全没有样式,而且会无端的增大 JS 文件的大小,我们希望能单独生成一个 CSS 文件,使用我们熟悉的方法来在 html 文件中引入这个 CSS 文件,这里可以使用 ExtractTextPlugin 这个插件来生成这个单独的 CSS 文件,具体配置可以看上面的时候方法。 + +然后将生产环境的打包命令添加到 npm scripts 当中。 + +```javascript +// package.json +"scripts": { + "dev": "webpack-dev-server --config webpack.dev.js" + "build": "webpack --config webpack.prod.js" +}, +``` +现在来运行 npm run build 命令看看效果怎样。 +我们发现 dist 文件夹里面生成了几个新的文件,如下图所示。 + +![Production files](../imgs/production-files.png) + +* index.bundle.js 生成的主要 JS 文件 +* vendor.bundle.js 生成的第三方文件库 +* style.css 单独生成的 css 样式文件 +* index.html HtmlWebpackPlugin 生成的 html 文件 +* 还有所有JS和样式文件的 sourceMap (.map) 文件 + +通过这个配置文件,我们基本了解了对于生产环境打包的各种注意事项。最后还有一点要同学们特别注意: + +**配置 node 环境变量** + +许多框架和库(比如 React 和 Redux)都会根据 **process.env.NODE_ENV** 这个变量来决定要把多少另外的代码包含进去。假如这个变量不等于 production 的话,那么很有可能就会添加更多的 log 和 测试信息,让开发者开发的时候更容易发现问题。反之,如果是生产环境,那么这些额外的代码都将不会被包含进去,它关注的和我们之前生产环境关注的点一样:那就是文件的大小和加载的速度。 + +所以需要 webpack 内置的 *DefinePlugin* 来确定这些代码库的环境变量。 + +有个这个插件只需要在配置文件中这样添加: + +```javascript +// webpack.prod.js +... +plugins: [ ++ new webpack.DefinePlugin({ ++ 'process.env.NODE_ENV': JSON.stringify('production') ++ }), + new webpack.optimize.UglifyJsPlugin({ + sourceMap: true + }), + new ExtractTextPlugin("styles.css"), + new webpack.optimize.CommonsChunkPlugin({ + name: "vendor" + }), + new HtmlWebpackPlugin({ + title: 'Test App', + }) +] +... +``` +这样添加上面插件的内容,可以将当前的环境变量设置为 production,这样让对环境变量有特殊设置的第三方库或者框架就可以完成优化,我们对比一下加这个插件和不加所生成的 vendor(React + react-dom) 文件的大小:原始大小 (283Kb),加了插件的大小 (101Kb)。我们可以显著的发现,文件大小的差异是惊人的! + diff --git a/imgs/production-files.png b/imgs/production-files.png new file mode 100644 index 0000000000000000000000000000000000000000..1e8f6ba773417b446a2e222d695d789270c2a133 GIT binary patch literal 44971 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

wC#>I+y5PzOXBxF-Bnn<3Eu(I>2@0- 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 literal 0 HcmV?d00001 diff --git a/imgs/react-project.png b/imgs/react-project.png new file mode 100644 index 0000000000000000000000000000000000000000..90dbbee10088ea47efcb64b7b365ab5ccca96068 GIT binary patch literal 13135 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 LhFtk;%h3M-M1nz@ literal 0 HcmV?d00001