Skip to content

Commit 616ac6f

Browse files
committed
update
1 parent bd9ec8c commit 616ac6f

File tree

15 files changed

+107
-21
lines changed

15 files changed

+107
-21
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ React技术栈系列教程,涉及React、Redux、Babel、Webpack等相关技
5656
1. JSX语法
5757
2. React组件
5858
3. React组件状态与生命周期
59-
4. React组件事件
60-
5. React组件ref
59+
4. React组件事件和ref
60+
5. 在React中使用CSS Module
6161

6262
- Redux
6363
1. Redux使用基础
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-

1+
# CommonsChunkPlugin
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
var path = require("path");
2+
3+
var webpack = require("webpack");
4+
5+
module.exports = {
6+
entry: {
7+
utility1: "./src/utility1",
8+
utility2: "./src/utility2",
9+
utility3: "./src/utility3"
10+
},
11+
12+
output: {
13+
path: path.join(__dirname, "buildOutput"),
14+
filename: "[name].js"
15+
},
16+
17+
plugins: [
18+
new webpack.optimize.CommonsChunkPlugin({
19+
// init.js用于存储webpack runtime的代码以及被所有entry都是用的公共模块,本例中init.js = webpack runtime
20+
name: "init"
21+
})
22+
]
23+
};
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
var path = require("path");
2+
3+
var webpack = require("webpack");
4+
5+
module.exports = {
6+
entry: {
7+
pageA: "./src/pageA",
8+
pageB: "./src/pageB"
9+
},
10+
11+
output: {
12+
path: path.join(__dirname, "buildOutput"),
13+
filename: "[name].js"
14+
},
15+
16+
// plugins: [
17+
// new webpack.optimize.CommonsChunkPlugin({
18+
// //本例中init.js = webpack runtime + polyfill + utility2
19+
// name: "init"
20+
// })
21+
// ]
22+
23+
plugins: [
24+
new webpack.optimize.CommonsChunkPlugin({
25+
//本例中init.js = webpack runtime
26+
name: "init",
27+
minChunks: Infinity
28+
})
29+
]
30+
};

tutorials/webpack-common-chunk/package.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
"clear": "rimraf buildOutput",
88
"prebuild": "npm run clear",
99
"build": "webpack",
10-
"start": "npm run build"
10+
"start": "npm run build",
11+
"example1": "rimraf buildOutput && webpack --config example1.config.js",
12+
"example2": "rimraf buildOutput && webpack --config example2.config.js"
1113
},
1214
"author": "",
1315
"license": "ISC",
@@ -17,7 +19,8 @@
1719
"webpack": "^1.13.3"
1820
},
1921
"reference": [
20-
"https://webpack.github.io/docs/list-of-plugins.html#commonschunkplugin"
22+
"https://webpack.github.io/docs/list-of-plugins.html#commonschunkplugin",
23+
"http://stackoverflow.com/questions/39548175/can-someone-explain-webpacks-commonschunkplugin",
2124
"https://webpack.js.org/plugins/commons-chunk-plugin/",
2225
"https://github.com/webpack/webpack/tree/master/examples/common-chunk-and-vendor-chunk",
2326
"https://github.com/webpack/webpack/tree/master/examples/multiple-entry-points-commons-chunk-css-bundle",

tutorials/webpack-common-chunk/pageA.js renamed to tutorials/webpack-common-chunk/src/pageA.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
var polyfill = require('./polyfill');
12
var utility1 = require('./utility1');
23
var utility2 = require('./utility2');
34

tutorials/webpack-common-chunk/pageB.js renamed to tutorials/webpack-common-chunk/src/pageB.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
var polyfill = require('./polyfill');
12
var utility2 = require('./utility2');
23
var utility3 = require('./utility3');
34

tutorials/webpack-common-chunk/pageC.js renamed to tutorials/webpack-common-chunk/src/pageC.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
var polyfill = require('./polyfill');
12
var utility2 = require('./utility2');
23
var utility3 = require('./utility3');
34

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = "polyfill";
Lines changed: 42 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,22 @@
11
var path = require("path");
2+
23
var webpack = require("webpack");
34

5+
//vendor1
6+
//vendor2
7+
//utility1
8+
//utility2
9+
//utility3
10+
//pageA = polyfill + utility1 + utility2
11+
//pageB = polyfill + utility2 + utility3
12+
//pageC = polyfill + utility2 + utility3
13+
414
module.exports = {
515
entry: {
6-
vendor: ["./vendor1", "./vendor2"],
7-
pageA: "./pageA",
8-
pageB: "./pageB",
9-
pageC: "./pageC"
16+
vendor: ["./src/polyfill", "./src/vendor1", "./src/vendor2"],
17+
pageA: "./src/pageA",
18+
pageB: "./src/pageB",
19+
pageC: "./src/pageC"
1020
},
1121

1222
output: {
@@ -16,14 +26,16 @@ module.exports = {
1626

1727
// plugins: [
1828
// new webpack.optimize.CommonsChunkPlugin({
19-
// // init.js用于存储webpack runtime的代码以及被所有entry都是用的公共模块,本例中init.js = webpack runtime
29+
// // 在不使用CommonsChunkPlugin插件时,会生成四个entry chunk文件,pageA.js、pageB.js、pageC.js和vendor.js,这四个文件中都包含webpack runtime和polyfill,
30+
// // 所以CommonsChunkPlugin插件会将这四个文件中的webpack runtime和polyfill提取出来,放到init.js中
31+
// // init.js用于存储webpack runtime的代码以及被所有entry都是用的公共模块,本例中init.js = webpack runtime + polyfill
2032
// name: "init"
2133
// })
2234
// ]
2335

2436
// plugins: [
2537
// new webpack.optimize.CommonsChunkPlugin({
26-
// // init.js用于存储webpack runtime的代码以及至少被3个entry都使用的公共模块,即init.js = webpack runtime + utility2.js
38+
// // init.js用于存储webpack runtime的代码以及至少被3个entry都使用的公共模块,即init.js = webpack runtime + polyfill + utility2.js
2739
// name: "init",
2840
// minChunks: 3
2941
// })
@@ -37,23 +49,37 @@ module.exports = {
3749
// })
3850
// ]
3951

52+
//http://stackoverflow.com/questions/39548175/can-someone-explain-webpacks-commonschunkplugin
53+
plugins: [
54+
new webpack.optimize.CommonsChunkPlugin({
55+
name: "common",
56+
minChunks: 2
57+
}),
58+
59+
new webpack.optimize.CommonsChunkPlugin({
60+
name: "init",
61+
minChunks: 2
62+
})
63+
]
64+
4065
// plugins: [
4166
// new webpack.optimize.CommonsChunkPlugin({
4267
// //顺序很重要
43-
// //common.js用于至少被2个entry都使用的公共模块,即common.js = utility2.js + utility3.js
68+
// //If an array of strings is passed this is equal to invoking the plugin multiple times for each chunk name.
69+
// //common.js用于至少被2个entry都使用的公共模块,即common.js = polyfill + utility2.js + utility3.js
4470
// //init.js用于存储webpack runtime的代码,即init.js = webpack runtime
4571
// names: ["common", "init"],
4672
// minChunks: 2
4773
// })
4874
// ]
4975

50-
plugins: [
51-
new webpack.optimize.CommonsChunkPlugin({
52-
//顺序很重要
53-
//common.js用于至少被2个entry都使用的公共模块,即common.js = utility2.js + utility3.js
54-
//vendor本身是一个entry,其包含vendor1和vendor2的代码,在此基础上vendor.js还会包含webpack runtime的代码,即vendor.js = webpack runtime + vendor1.js + vendor2.js
55-
names: ["common", "vendor"],
56-
minChunks: 2
57-
})
58-
]
76+
// plugins: [
77+
// new webpack.optimize.CommonsChunkPlugin({
78+
// //顺序很重要
79+
// //common.js用于至少被2个entry都使用的公共模块,即common.js = utility2.js + utility3.js
80+
// //vendor本身是一个entry,其包含vendor1和vendor2的代码,在此基础上vendor.js还会包含webpack runtime的代码,即vendor.js = webpack runtime + vendor1.js + vendor2.js
81+
// names: ["common", "vendor"],
82+
// minChunks: 2
83+
// })
84+
// ]
5985
};

0 commit comments

Comments
 (0)