├── src ├── scripts │ ├── list.js │ ├── detail.js │ ├── home.js │ ├── modules │ │ ├── ModuleA.js │ │ └── NavComp.js │ └── index.js └── styles │ ├── modules │ └── ModuleA.css │ ├── index.css │ └── common │ └── reset.css ├── html └── index.html ├── README.md ├── .gitignore ├── webpack.libs.js ├── package.json ├── webpack.config.js └── libs └── vendors_manifest.json /src/scripts/list.js: -------------------------------------------------------------------------------- 1 | 2 | module.exports = { 3 | getHtml: function() { 4 | return '

List

'; 5 | } 6 | } -------------------------------------------------------------------------------- /src/scripts/detail.js: -------------------------------------------------------------------------------- 1 | 2 | module.exports = { 3 | getHtml: function() { 4 | return '

Detail

'; 5 | } 6 | }; -------------------------------------------------------------------------------- /src/scripts/home.js: -------------------------------------------------------------------------------- 1 | 2 | var ModuleA = require('./modules/ModuleA.js'); 3 | 4 | module.exports = { 5 | getHtml: function() { 6 | return ModuleA.getHtml(); 7 | } 8 | } -------------------------------------------------------------------------------- /src/styles/modules/ModuleA.css: -------------------------------------------------------------------------------- 1 | @charset 'utf-8'; 2 | 3 | .ModuleA { 4 | font-size: 16px; 5 | color: #333; 6 | display: flex; 7 | 8 | &.title { 9 | color: #ff6622; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/scripts/modules/ModuleA.js: -------------------------------------------------------------------------------- 1 | 2 | import '!style!css!postcss!Styles/modules/ModuleA.css'; 3 | 4 | module.exports = { 5 | 6 | getHtml: function() { 7 | return '

Hello webpack !

'; 8 | } 9 | } -------------------------------------------------------------------------------- /html/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Webpack sample! 6 | 7 | 8 |
9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /src/styles/index.css: -------------------------------------------------------------------------------- 1 | @charset 'utf-8'; 2 | 3 | @import './common/reset.css'; 4 | 5 | html, body { 6 | width: 100%; 7 | height: 100%; 8 | margin: 0; 9 | background: #666; 10 | 11 | display: flex; 12 | flex-direction: column; 13 | } 14 | 15 | .head { 16 | height: 80px; 17 | } 18 | 19 | .main { 20 | flex: 1; 21 | } -------------------------------------------------------------------------------- /src/scripts/modules/NavComp.js: -------------------------------------------------------------------------------- 1 | 2 | module.exports = { 3 | getHtml: function() { 4 | return [ 5 | '
', 6 | '', 7 | '', 8 | '', 9 | '
' 10 | ].join(''); 11 | } 12 | }; -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # webpack-demo 2 | step by step introduce webpack 3 | 4 | ## branch list 5 | 6 | ### step-1 7 | a simple demo about compile js module. 8 | 9 | ### step-2 10 | use loader: use webpck loader to load css. 11 | 12 | ### step-3 13 | use plugin: use plugin to export css file. 14 | 15 | ### step-4 16 | use webpack-dev-server and hot-replace-module. 17 | 18 | ### step-5 19 | use es2015 to write js, 20 | use postcss to build css. 21 | 22 | ### step-6 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /dev/ 2 | /prd/ 3 | /refs/ 4 | 5 | 6 | # kdiff3 ignore 7 | *.orig 8 | 9 | # maven ignore 10 | target/ 11 | 12 | # eclipse ignore 13 | .settings/ 14 | .project 15 | .classpath 16 | 17 | # idea ignore 18 | .idea/ 19 | *.ipr 20 | *.iml 21 | *.iws 22 | 23 | # temp ignore 24 | *.log 25 | *.cache 26 | *.diff 27 | *.patch 28 | *.tmp 29 | 30 | # system ignore 31 | .DS_Store 32 | Thumbs.db 33 | 34 | # package ignore (optional) 35 | # *.jar 36 | # *.war 37 | # *.zip 38 | # *.tar 39 | # *.tar.gz 40 | 41 | 42 | .sass-cache 43 | /resource/ 44 | /log/ 45 | /node_modules/ -------------------------------------------------------------------------------- /webpack.libs.js: -------------------------------------------------------------------------------- 1 | var webpack = require('webpack'); 2 | var CleanWebpackPlugin = require('clean-webpack-plugin'); 3 | var WebpackMd5Hash = require('webpack-md5-hash'); 4 | var path = require('path'); 5 | 6 | 7 | module.exports = { 8 | 9 | entry: { 10 | vendors: [ 11 | 'antd', 12 | 'isomorphic-fetch', 13 | 'react', 14 | 'react-dom', 15 | 'react-redux', 16 | 'react-router', 17 | 'redux', 18 | 'redux-promise-middleware', 19 | 'redux-thunk', 20 | 'superagent', 21 | 'jquery' 22 | ] 23 | }, 24 | 25 | output: { 26 | path: path.resolve('./libs/'), 27 | filename: '[name]_[chunkhash].js', 28 | library: '[name]_[chunkhash]' 29 | }, 30 | 31 | plugins: [ 32 | new CleanWebpackPlugin(['libs']), 33 | new webpack.DllPlugin({ 34 | path: path.resolve('./libs/[name]_manifest.json'), 35 | name: '[name]_[chunkhash]', 36 | context: __dirname 37 | }), 38 | // 根据文件内容生成 MD5 39 | new WebpackMd5Hash() 40 | ] 41 | }; 42 | -------------------------------------------------------------------------------- /src/scripts/index.js: -------------------------------------------------------------------------------- 1 | import 'Styles/index.css'; 2 | import NavComp from './modules/NavComp.js'; 3 | 4 | let bindNavEvent = () => { 5 | $('.head').on('click', '.js-nav-item', function() { 6 | let pageId = this.getAttribute('data-page-id'), 7 | $container = $('body > .main'); 8 | 9 | // 首页 10 | if(pageId === 'home') { 11 | require.ensure([], () => { 12 | let home = require('./home.js'); 13 | $container.html( home.getHtml() ); 14 | }); 15 | } 16 | // 列表页 17 | else if (pageId === 'list') { 18 | require.ensure([], () => { 19 | let list = require('./list.js'); 20 | $container.html( list.getHtml() ); 21 | }); 22 | } 23 | // 详情页 24 | else if (pageId === 'detail') { 25 | require.ensure([], () => { 26 | let detail = require('./detail.js'); 27 | $container.html( detail.getHtml() ); 28 | }); 29 | } 30 | 31 | }); 32 | } 33 | 34 | let init = () => { 35 | $('body > .head').html(NavComp.getHtml()); 36 | bindNavEvent(); 37 | } 38 | 39 | init(); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "webpack-sample", 3 | "version": "1.0.0", 4 | "description": "webpack sample ", 5 | "dependencies": { 6 | "antd": "^1.9.1", 7 | "isomorphic-fetch": "^2.2.1", 8 | "jquery": "^3.1.0", 9 | "react": "^15.3.0", 10 | "react-dom": "^15.3.0", 11 | "react-redux": "^4.4.5", 12 | "react-router": "^2.6.1", 13 | "redux": "^3.5.2", 14 | "redux-promise-middleware": "^3.3.2", 15 | "redux-thunk": "^2.1.0", 16 | "superagent": "^2.2.0" 17 | }, 18 | "devDependencies": { 19 | "babel-core": "^6.13.2", 20 | "babel-loader": "^6.2.4", 21 | "babel-preset-es2015": "^6.13.2", 22 | "babel-preset-stage-0": "^6.5.0", 23 | "clean-webpack-plugin": "^0.1.10", 24 | "css-loader": "^0.23.1", 25 | "extract-text-webpack-plugin": "^1.0.1", 26 | "html-webpack-plugin": "^2.22.0", 27 | "json-loader": "^0.5.4", 28 | "postcss-cssnext": "^2.7.0", 29 | "postcss-loader": "^0.10.0", 30 | "postcss-scss": "^0.1.9", 31 | "precss": "^1.4.0", 32 | "style-loader": "^0.13.1", 33 | "webpack": "^1.13.2", 34 | "webpack-dev-server": "^1.14.1", 35 | "webpack-md5-hash": "0.0.5" 36 | }, 37 | "scripts": { 38 | "wbpk": "webpack --colors --profile --display-modules", 39 | "dll": "webpack --config webpack.libs.js" 40 | }, 41 | "keywords": [ 42 | "webpack", 43 | "sample" 44 | ], 45 | "author": "functions", 46 | "license": "MIT" 47 | } 48 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * at project root dir: 3 | * webpack.config.js 4 | */ 5 | var Path = require('path'); 6 | var webpack = require('webpack'); 7 | var ExtractTextPlugin = require('extract-text-webpack-plugin'); 8 | var extractCSS = new ExtractTextPlugin('[name]@[chunkhash].css'); 9 | var ProgressPlugin = require('webpack/lib/ProgressPlugin'); 10 | var HtmlWebpackPlugin = require('html-webpack-plugin'); 11 | var CleanWebpackPlugin = require('clean-webpack-plugin'); 12 | var WebpackMd5Hash = require('webpack-md5-hash'); 13 | 14 | var libsManifestJSON = require('./libs/vendors_manifest.json'); 15 | 16 | 17 | module.exports = { 18 | // 多入口文件的配置 19 | entry: { 20 | index: './src/scripts/index.js' 21 | }, 22 | 23 | output: { 24 | path: './prd/', 25 | filename: '[name]@[chunkhash].js', 26 | // 这里的 [name] 对应 entry 的 key 27 | chunkFilename: "[id].chunk@[chunkhash].js" 28 | }, 29 | 30 | resolve: { 31 | // 配置路径的别名 32 | alias: { // 别名的路径都必须使用绝对路径 33 | Styles: Path.resolve('./src/styles') 34 | } 35 | }, 36 | 37 | devtool: '#source-map', 38 | 39 | module: { 40 | // 不扫描的文件或目录,正则匹配 41 | noParse: [ 42 | /prd/ 43 | ], 44 | // 首先执行的 loader; 这里可以引入一些语法检查工具等; 45 | preloaders: [], 46 | 47 | // 其次执行的 loader 48 | loaders: [ 49 | // 处理 css 50 | { 51 | test: /\.css$/, 52 | loader: extractCSS.extract(['css?sourceMap&minimize', 'postcss?parser=postcss-scss']) 53 | }, 54 | // 处理 js 55 | { 56 | test: /\.js$/, 57 | exclude: /node_modules/, 58 | loaders: ['babel-loader?presets[]=es2015,presets[]=stage-0'] 59 | }, 60 | { 61 | test: /\.json$/, 62 | loader: 'json-loader' 63 | } 64 | ], 65 | 66 | // 最后执行的 loader, 这里可以执行一些单元测试, 覆盖率测试等; 67 | postloaders: [] 68 | }, 69 | 70 | plugins: [ 71 | // 清空编译后的目录 72 | new CleanWebpackPlugin(['prd']), 73 | // 引用打包好的第三方库 74 | new webpack.DllReferencePlugin({ 75 | context: __dirname, 76 | manifest: libsManifestJSON 77 | }), 78 | // 第三方库的引用设置为全局变量 79 | new webpack.ProvidePlugin({ 80 | $: "jquery" 81 | }), 82 | // 自动生成 html 83 | new HtmlWebpackPlugin({ 84 | template: './html/index.html', 85 | vendorFileName: '../libs/' + libsManifestJSON.name + '.js' 86 | }), 87 | // 导出 css 文件 88 | extractCSS, 89 | // 压缩 js 90 | new webpack.optimize.UglifyJsPlugin({ 91 | compress: { 92 | warnings: false 93 | } 94 | }), 95 | // 根据文件内容生成 MD5 96 | new WebpackMd5Hash(), 97 | // 显示加载进度 98 | new ProgressPlugin(function(percentage, msg) { 99 | console.log(parseInt(percentage * 100) + '%', msg); 100 | }) 101 | ], 102 | 103 | // postcss 处理器 104 | postcss: function() { 105 | return [ 106 | require('precss'), 107 | require('postcss-cssnext')() 108 | ] 109 | } 110 | 111 | }; -------------------------------------------------------------------------------- /src/styles/common/reset.css: -------------------------------------------------------------------------------- 1 | /*! normalize.css v4.2.0 | MIT License | github.com/necolas/normalize.css */ 2 | 3 | /** 4 | * 1. Change the default font family in all browsers (opinionated). 5 | * 2. Correct the line height in all browsers. 6 | * 3. Prevent adjustments of font size after orientation changes in IE and iOS. 7 | */ 8 | 9 | /* Document 10 | ========================================================================== */ 11 | 12 | html { 13 | font-family: sans-serif; /* 1 */ 14 | line-height: 1.15; /* 2 */ 15 | -ms-text-size-adjust: 100%; /* 3 */ 16 | -webkit-text-size-adjust: 100%; /* 3 */ 17 | } 18 | 19 | /* Sections 20 | ========================================================================== */ 21 | 22 | /** 23 | * Remove the margin in all browsers (opinionated). 24 | */ 25 | 26 | body { 27 | margin: 0; 28 | } 29 | 30 | /** 31 | * Add the correct display in IE 9-. 32 | */ 33 | 34 | article, 35 | aside, 36 | footer, 37 | header, 38 | nav, 39 | section { 40 | display: block; 41 | } 42 | 43 | /** 44 | * Correct the font size and margin on `h1` elements within `section` and 45 | * `article` contexts in Chrome, Firefox, and Safari. 46 | */ 47 | 48 | h1 { 49 | font-size: 2em; 50 | margin: 0.67em 0; 51 | } 52 | 53 | /* Grouping content 54 | ========================================================================== */ 55 | 56 | /** 57 | * Add the correct display in IE 9-. 58 | * 1. Add the correct display in IE. 59 | */ 60 | 61 | figcaption, 62 | figure, 63 | main { /* 1 */ 64 | display: block; 65 | } 66 | 67 | /** 68 | * Add the correct margin in IE 8. 69 | */ 70 | 71 | figure { 72 | margin: 1em 40px; 73 | } 74 | 75 | /** 76 | * 1. Add the correct box sizing in Firefox. 77 | * 2. Show the overflow in Edge and IE. 78 | */ 79 | 80 | hr { 81 | box-sizing: content-box; /* 1 */ 82 | height: 0; /* 1 */ 83 | overflow: visible; /* 2 */ 84 | } 85 | 86 | /** 87 | * 1. Correct the inheritance and scaling of font size in all browsers. 88 | * 2. Correct the odd `em` font sizing in all browsers. 89 | */ 90 | 91 | pre { 92 | font-family: monospace, monospace; /* 1 */ 93 | font-size: 1em; /* 2 */ 94 | } 95 | 96 | /* Text-level semantics 97 | ========================================================================== */ 98 | 99 | /** 100 | * 1. Remove the gray background on active links in IE 10. 101 | * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. 102 | */ 103 | 104 | a { 105 | background-color: transparent; /* 1 */ 106 | -webkit-text-decoration-skip: objects; /* 2 */ 107 | } 108 | 109 | /** 110 | * Remove the outline on focused links when they are also active or hovered 111 | * in all browsers (opinionated). 112 | */ 113 | 114 | a:active, 115 | a:hover { 116 | outline-width: 0; 117 | } 118 | 119 | /** 120 | * 1. Remove the bottom border in Firefox 39-. 121 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. 122 | */ 123 | 124 | abbr[title] { 125 | border-bottom: none; /* 1 */ 126 | text-decoration: underline; /* 2 */ 127 | text-decoration: underline dotted; /* 2 */ 128 | } 129 | 130 | /** 131 | * Prevent the duplicate application of `bolder` by the next rule in Safari 6. 132 | */ 133 | 134 | b, 135 | strong { 136 | font-weight: inherit; 137 | } 138 | 139 | /** 140 | * Add the correct font weight in Chrome, Edge, and Safari. 141 | */ 142 | 143 | b, 144 | strong { 145 | font-weight: bolder; 146 | } 147 | 148 | /** 149 | * 1. Correct the inheritance and scaling of font size in all browsers. 150 | * 2. Correct the odd `em` font sizing in all browsers. 151 | */ 152 | 153 | code, 154 | kbd, 155 | samp { 156 | font-family: monospace, monospace; /* 1 */ 157 | font-size: 1em; /* 2 */ 158 | } 159 | 160 | /** 161 | * Add the correct font style in Android 4.3-. 162 | */ 163 | 164 | dfn { 165 | font-style: italic; 166 | } 167 | 168 | /** 169 | * Add the correct background and color in IE 9-. 170 | */ 171 | 172 | mark { 173 | background-color: #ff0; 174 | color: #000; 175 | } 176 | 177 | /** 178 | * Add the correct font size in all browsers. 179 | */ 180 | 181 | small { 182 | font-size: 80%; 183 | } 184 | 185 | /** 186 | * Prevent `sub` and `sup` elements from affecting the line height in 187 | * all browsers. 188 | */ 189 | 190 | sub, 191 | sup { 192 | font-size: 75%; 193 | line-height: 0; 194 | position: relative; 195 | vertical-align: baseline; 196 | } 197 | 198 | sub { 199 | bottom: -0.25em; 200 | } 201 | 202 | sup { 203 | top: -0.5em; 204 | } 205 | 206 | /* Embedded content 207 | ========================================================================== */ 208 | 209 | /** 210 | * Add the correct display in IE 9-. 211 | */ 212 | 213 | audio, 214 | video { 215 | display: inline-block; 216 | } 217 | 218 | /** 219 | * Add the correct display in iOS 4-7. 220 | */ 221 | 222 | audio:not([controls]) { 223 | display: none; 224 | height: 0; 225 | } 226 | 227 | /** 228 | * Remove the border on images inside links in IE 10-. 229 | */ 230 | 231 | img { 232 | border-style: none; 233 | } 234 | 235 | /** 236 | * Hide the overflow in IE. 237 | */ 238 | 239 | svg:not(:root) { 240 | overflow: hidden; 241 | } 242 | 243 | /* Forms 244 | ========================================================================== */ 245 | 246 | /** 247 | * 1. Change the font styles in all browsers (opinionated). 248 | * 2. Remove the margin in Firefox and Safari. 249 | */ 250 | 251 | button, 252 | input, 253 | optgroup, 254 | select, 255 | textarea { 256 | font-family: sans-serif; /* 1 */ 257 | font-size: 100%; /* 1 */ 258 | line-height: 1.15; /* 1 */ 259 | margin: 0; /* 2 */ 260 | } 261 | 262 | /** 263 | * Show the overflow in IE. 264 | * 1. Show the overflow in Edge. 265 | */ 266 | 267 | button, 268 | input { /* 1 */ 269 | overflow: visible; 270 | } 271 | 272 | /** 273 | * Remove the inheritance of text transform in Edge, Firefox, and IE. 274 | * 1. Remove the inheritance of text transform in Firefox. 275 | */ 276 | 277 | button, 278 | select { /* 1 */ 279 | text-transform: none; 280 | } 281 | 282 | /** 283 | * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` 284 | * controls in Android 4. 285 | * 2. Correct the inability to style clickable types in iOS and Safari. 286 | */ 287 | 288 | button, 289 | html [type="button"], /* 1 */ 290 | [type="reset"], 291 | [type="submit"] { 292 | -webkit-appearance: button; /* 2 */ 293 | } 294 | 295 | /** 296 | * Remove the inner border and padding in Firefox. 297 | */ 298 | 299 | button::-moz-focus-inner, 300 | [type="button"]::-moz-focus-inner, 301 | [type="reset"]::-moz-focus-inner, 302 | [type="submit"]::-moz-focus-inner { 303 | border-style: none; 304 | padding: 0; 305 | } 306 | 307 | /** 308 | * Restore the focus styles unset by the previous rule. 309 | */ 310 | 311 | button:-moz-focusring, 312 | [type="button"]:-moz-focusring, 313 | [type="reset"]:-moz-focusring, 314 | [type="submit"]:-moz-focusring { 315 | outline: 1px dotted ButtonText; 316 | } 317 | 318 | /** 319 | * Change the border, margin, and padding in all browsers (opinionated). 320 | */ 321 | 322 | fieldset { 323 | border: 1px solid #c0c0c0; 324 | margin: 0 2px; 325 | padding: 0.35em 0.625em 0.75em; 326 | } 327 | 328 | /** 329 | * 1. Correct the text wrapping in Edge and IE. 330 | * 2. Correct the color inheritance from `fieldset` elements in IE. 331 | * 3. Remove the padding so developers are not caught out when they zero out 332 | * `fieldset` elements in all browsers. 333 | */ 334 | 335 | legend { 336 | box-sizing: border-box; /* 1 */ 337 | color: inherit; /* 2 */ 338 | display: table; /* 1 */ 339 | max-width: 100%; /* 1 */ 340 | padding: 0; /* 3 */ 341 | white-space: normal; /* 1 */ 342 | } 343 | 344 | /** 345 | * 1. Add the correct display in IE 9-. 346 | * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. 347 | */ 348 | 349 | progress { 350 | display: inline-block; /* 1 */ 351 | vertical-align: baseline; /* 2 */ 352 | } 353 | 354 | /** 355 | * Remove the default vertical scrollbar in IE. 356 | */ 357 | 358 | textarea { 359 | overflow: auto; 360 | } 361 | 362 | /** 363 | * 1. Add the correct box sizing in IE 10-. 364 | * 2. Remove the padding in IE 10-. 365 | */ 366 | 367 | [type="checkbox"], 368 | [type="radio"] { 369 | box-sizing: border-box; /* 1 */ 370 | padding: 0; /* 2 */ 371 | } 372 | 373 | /** 374 | * Correct the cursor style of increment and decrement buttons in Chrome. 375 | */ 376 | 377 | [type="number"]::-webkit-inner-spin-button, 378 | [type="number"]::-webkit-outer-spin-button { 379 | height: auto; 380 | } 381 | 382 | /** 383 | * 1. Correct the odd appearance in Chrome and Safari. 384 | * 2. Correct the outline style in Safari. 385 | */ 386 | 387 | [type="search"] { 388 | -webkit-appearance: textfield; /* 1 */ 389 | outline-offset: -2px; /* 2 */ 390 | } 391 | 392 | /** 393 | * Remove the inner padding and cancel buttons in Chrome and Safari on OS X. 394 | */ 395 | 396 | [type="search"]::-webkit-search-cancel-button, 397 | [type="search"]::-webkit-search-decoration { 398 | -webkit-appearance: none; 399 | } 400 | 401 | /** 402 | * 1. Correct the inability to style clickable types in iOS and Safari. 403 | * 2. Change font properties to `inherit` in Safari. 404 | */ 405 | 406 | ::-webkit-file-upload-button { 407 | -webkit-appearance: button; /* 1 */ 408 | font: inherit; /* 2 */ 409 | } 410 | 411 | /* Interactive 412 | ========================================================================== */ 413 | 414 | /* 415 | * Add the correct display in IE 9-. 416 | * 1. Add the correct display in Edge, IE, and Firefox. 417 | */ 418 | 419 | details, /* 1 */ 420 | menu { 421 | display: block; 422 | } 423 | 424 | /* 425 | * Add the correct display in all browsers. 426 | */ 427 | 428 | summary { 429 | display: list-item; 430 | } 431 | 432 | /* Scripting 433 | ========================================================================== */ 434 | 435 | /** 436 | * Add the correct display in IE 9-. 437 | */ 438 | 439 | canvas { 440 | display: inline-block; 441 | } 442 | 443 | /** 444 | * Add the correct display in IE. 445 | */ 446 | 447 | template { 448 | display: none; 449 | } 450 | 451 | /* Hidden 452 | ========================================================================== */ 453 | 454 | /** 455 | * Add the correct display in IE 10-. 456 | */ 457 | 458 | [hidden] { 459 | display: none; 460 | } -------------------------------------------------------------------------------- /libs/vendors_manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vendors_c5f3f028c5008c4719bc", 3 | "content": { 4 | "./node_modules/react/lib/ReactServerRenderingTransaction.js": 135, 5 | "./node_modules/react/react.js": 2, 6 | "./node_modules/react/lib/React.js": 3, 7 | "./node_modules/process/browser.js": 4, 8 | "./node_modules/object-assign/index.js": 5, 9 | "./node_modules/react/lib/ReactChildren.js": 6, 10 | "./node_modules/react/lib/PooledClass.js": 7, 11 | "./node_modules/react/lib/reactProdInvariant.js": 8, 12 | "./node_modules/fbjs/lib/invariant.js": 9, 13 | "./node_modules/react/lib/ReactElement.js": 10, 14 | "./node_modules/react/lib/ReactCurrentOwner.js": 11, 15 | "./node_modules/fbjs/lib/warning.js": 12, 16 | "./node_modules/fbjs/lib/emptyFunction.js": 13, 17 | "./node_modules/react/lib/canDefineProperty.js": 14, 18 | "./node_modules/react/lib/traverseAllChildren.js": 15, 19 | "./node_modules/react/lib/getIteratorFn.js": 16, 20 | "./node_modules/react/lib/KeyEscapeUtils.js": 17, 21 | "./node_modules/react/lib/ReactComponent.js": 18, 22 | "./node_modules/react/lib/ReactNoopUpdateQueue.js": 19, 23 | "./node_modules/fbjs/lib/emptyObject.js": 20, 24 | "./node_modules/react/lib/ReactPureComponent.js": 21, 25 | "./node_modules/react/lib/ReactClass.js": 22, 26 | "./node_modules/react/lib/ReactPropTypeLocations.js": 23, 27 | "./node_modules/fbjs/lib/keyMirror.js": 24, 28 | "./node_modules/react/lib/ReactPropTypeLocationNames.js": 25, 29 | "./node_modules/fbjs/lib/keyOf.js": 26, 30 | "./node_modules/react/lib/ReactDOMFactories.js": 27, 31 | "./node_modules/fbjs/lib/mapObject.js": 28, 32 | "./node_modules/react/lib/ReactElementValidator.js": 29, 33 | "./node_modules/react/lib/ReactComponentTreeDevtool.js": 30, 34 | "./node_modules/react/lib/checkReactTypeSpec.js": 31, 35 | "./node_modules/react/lib/ReactPropTypesSecret.js": 32, 36 | "./node_modules/react/lib/ReactPropTypes.js": 33, 37 | "./node_modules/react/lib/ReactVersion.js": 34, 38 | "./node_modules/react/lib/onlyChild.js": 35, 39 | "./node_modules/react-dom/index.js": 36, 40 | "./node_modules/react/lib/ReactDOM.js": 37, 41 | "./node_modules/react/lib/ReactDOMComponentTree.js": 38, 42 | "./node_modules/react/lib/DOMProperty.js": 39, 43 | "./node_modules/react/lib/ReactDOMComponentFlags.js": 40, 44 | "./node_modules/react/lib/ReactDefaultInjection.js": 41, 45 | "./node_modules/react/lib/BeforeInputEventPlugin.js": 42, 46 | "./node_modules/react/lib/EventConstants.js": 43, 47 | "./node_modules/react/lib/EventPropagators.js": 44, 48 | "./node_modules/react/lib/EventPluginHub.js": 45, 49 | "./node_modules/react/lib/EventPluginRegistry.js": 46, 50 | "./node_modules/react/lib/EventPluginUtils.js": 47, 51 | "./node_modules/react/lib/ReactErrorUtils.js": 48, 52 | "./node_modules/react/lib/accumulateInto.js": 49, 53 | "./node_modules/react/lib/forEachAccumulated.js": 50, 54 | "./node_modules/fbjs/lib/ExecutionEnvironment.js": 51, 55 | "./node_modules/react/lib/FallbackCompositionState.js": 52, 56 | "./node_modules/react/lib/getTextContentAccessor.js": 53, 57 | "./node_modules/react/lib/SyntheticCompositionEvent.js": 54, 58 | "./node_modules/react/lib/SyntheticEvent.js": 55, 59 | "./node_modules/react/lib/SyntheticInputEvent.js": 56, 60 | "./node_modules/react/lib/ChangeEventPlugin.js": 57, 61 | "./node_modules/react/lib/ReactUpdates.js": 58, 62 | "./node_modules/react/lib/CallbackQueue.js": 59, 63 | "./node_modules/react/lib/ReactFeatureFlags.js": 60, 64 | "./node_modules/react/lib/ReactReconciler.js": 61, 65 | "./node_modules/react/lib/ReactRef.js": 62, 66 | "./node_modules/react/lib/ReactOwner.js": 63, 67 | "./node_modules/react/lib/ReactInstrumentation.js": 64, 68 | "./node_modules/react/lib/ReactDebugTool.js": 65, 69 | "./node_modules/react/lib/ReactInvalidSetStateWarningDevTool.js": 66, 70 | "./node_modules/react/lib/ReactHostOperationHistoryDevtool.js": 67, 71 | "./node_modules/react/lib/ReactChildrenMutationWarningDevtool.js": 68, 72 | "./node_modules/fbjs/lib/performanceNow.js": 69, 73 | "./node_modules/fbjs/lib/performance.js": 70, 74 | "./node_modules/react/lib/Transaction.js": 71, 75 | "./node_modules/react/lib/getEventTarget.js": 72, 76 | "./node_modules/react/lib/isEventSupported.js": 73, 77 | "./node_modules/react/lib/isTextInputElement.js": 74, 78 | "./node_modules/react/lib/DefaultEventPluginOrder.js": 75, 79 | "./node_modules/react/lib/EnterLeaveEventPlugin.js": 76, 80 | "./node_modules/react/lib/SyntheticMouseEvent.js": 77, 81 | "./node_modules/react/lib/SyntheticUIEvent.js": 78, 82 | "./node_modules/react/lib/ViewportMetrics.js": 79, 83 | "./node_modules/react/lib/getEventModifierState.js": 80, 84 | "./node_modules/react/lib/HTMLDOMPropertyConfig.js": 81, 85 | "./node_modules/react/lib/ReactComponentBrowserEnvironment.js": 82, 86 | "./node_modules/react/lib/DOMChildrenOperations.js": 83, 87 | "./node_modules/react/lib/DOMLazyTree.js": 84, 88 | "./node_modules/react/lib/DOMNamespaces.js": 85, 89 | "./node_modules/react/lib/setInnerHTML.js": 86, 90 | "./node_modules/react/lib/createMicrosoftUnsafeLocalFunction.js": 87, 91 | "./node_modules/react/lib/setTextContent.js": 88, 92 | "./node_modules/react/lib/escapeTextContentForBrowser.js": 89, 93 | "./node_modules/react/lib/Danger.js": 90, 94 | "./node_modules/fbjs/lib/createNodesFromMarkup.js": 91, 95 | "./node_modules/fbjs/lib/createArrayFromMixed.js": 92, 96 | "./node_modules/fbjs/lib/getMarkupWrap.js": 93, 97 | "./node_modules/react/lib/ReactMultiChildUpdateTypes.js": 94, 98 | "./node_modules/react/lib/ReactDOMIDOperations.js": 95, 99 | "./node_modules/react/lib/ReactDOMComponent.js": 96, 100 | "./node_modules/react/lib/AutoFocusUtils.js": 97, 101 | "./node_modules/fbjs/lib/focusNode.js": 98, 102 | "./node_modules/react/lib/CSSPropertyOperations.js": 99, 103 | "./node_modules/react/lib/CSSProperty.js": 100, 104 | "./node_modules/fbjs/lib/camelizeStyleName.js": 101, 105 | "./node_modules/fbjs/lib/camelize.js": 102, 106 | "./node_modules/react/lib/dangerousStyleValue.js": 103, 107 | "./node_modules/fbjs/lib/hyphenateStyleName.js": 104, 108 | "./node_modules/fbjs/lib/hyphenate.js": 105, 109 | "./node_modules/fbjs/lib/memoizeStringOnly.js": 106, 110 | "./node_modules/react/lib/DOMPropertyOperations.js": 107, 111 | "./node_modules/react/lib/ReactDOMInstrumentation.js": 108, 112 | "./node_modules/react/lib/ReactDOMDebugTool.js": 109, 113 | "./node_modules/react/lib/ReactDOMNullInputValuePropDevtool.js": 110, 114 | "./node_modules/react/lib/ReactDOMUnknownPropertyDevtool.js": 111, 115 | "./node_modules/react/lib/quoteAttributeValueForBrowser.js": 112, 116 | "./node_modules/react/lib/ReactBrowserEventEmitter.js": 113, 117 | "./node_modules/react/lib/ReactEventEmitterMixin.js": 114, 118 | "./node_modules/react/lib/getVendorPrefixedEventName.js": 115, 119 | "./node_modules/react/lib/ReactDOMButton.js": 116, 120 | "./node_modules/react/lib/DisabledInputUtils.js": 117, 121 | "./node_modules/react/lib/ReactDOMInput.js": 118, 122 | "./node_modules/react/lib/LinkedValueUtils.js": 119, 123 | "./node_modules/react/lib/ReactDOMOption.js": 120, 124 | "./node_modules/react/lib/ReactDOMSelect.js": 121, 125 | "./node_modules/react/lib/ReactDOMTextarea.js": 122, 126 | "./node_modules/react/lib/ReactMultiChild.js": 123, 127 | "./node_modules/react/lib/ReactComponentEnvironment.js": 124, 128 | "./node_modules/react/lib/ReactInstanceMap.js": 125, 129 | "./node_modules/react/lib/ReactChildReconciler.js": 126, 130 | "./node_modules/react/lib/instantiateReactComponent.js": 127, 131 | "./node_modules/react/lib/ReactCompositeComponent.js": 128, 132 | "./node_modules/react/lib/ReactNodeTypes.js": 129, 133 | "./node_modules/fbjs/lib/shallowEqual.js": 130, 134 | "./node_modules/react/lib/shouldUpdateReactComponent.js": 131, 135 | "./node_modules/react/lib/ReactEmptyComponent.js": 132, 136 | "./node_modules/react/lib/ReactHostComponent.js": 133, 137 | "./node_modules/react/lib/flattenChildren.js": 134, 138 | "./node_modules/antd/dist/antd.js": 1, 139 | "./node_modules/react/lib/ReactServerUpdateQueue.js": 136, 140 | "./node_modules/react/lib/ReactUpdateQueue.js": 137, 141 | "./node_modules/react/lib/validateDOMNesting.js": 138, 142 | "./node_modules/react/lib/ReactDOMEmptyComponent.js": 139, 143 | "./node_modules/react/lib/ReactDOMTreeTraversal.js": 140, 144 | "./node_modules/react/lib/ReactDOMTextComponent.js": 141, 145 | "./node_modules/react/lib/ReactDefaultBatchingStrategy.js": 142, 146 | "./node_modules/react/lib/ReactEventListener.js": 143, 147 | "./node_modules/fbjs/lib/EventListener.js": 144, 148 | "./node_modules/fbjs/lib/getUnboundedScrollPosition.js": 145, 149 | "./node_modules/react/lib/ReactInjection.js": 146, 150 | "./node_modules/react/lib/ReactReconcileTransaction.js": 147, 151 | "./node_modules/react/lib/ReactInputSelection.js": 148, 152 | "./node_modules/react/lib/ReactDOMSelection.js": 149, 153 | "./node_modules/react/lib/getNodeForCharacterOffset.js": 150, 154 | "./node_modules/fbjs/lib/containsNode.js": 151, 155 | "./node_modules/fbjs/lib/isTextNode.js": 152, 156 | "./node_modules/fbjs/lib/isNode.js": 153, 157 | "./node_modules/fbjs/lib/getActiveElement.js": 154, 158 | "./node_modules/react/lib/SVGDOMPropertyConfig.js": 155, 159 | "./node_modules/react/lib/SelectEventPlugin.js": 156, 160 | "./node_modules/react/lib/SimpleEventPlugin.js": 157, 161 | "./node_modules/react/lib/SyntheticAnimationEvent.js": 158, 162 | "./node_modules/react/lib/SyntheticClipboardEvent.js": 159, 163 | "./node_modules/react/lib/SyntheticFocusEvent.js": 160, 164 | "./node_modules/react/lib/SyntheticKeyboardEvent.js": 161, 165 | "./node_modules/react/lib/getEventCharCode.js": 162, 166 | "./node_modules/react/lib/getEventKey.js": 163, 167 | "./node_modules/react/lib/SyntheticDragEvent.js": 164, 168 | "./node_modules/react/lib/SyntheticTouchEvent.js": 165, 169 | "./node_modules/react/lib/SyntheticTransitionEvent.js": 166, 170 | "./node_modules/react/lib/SyntheticWheelEvent.js": 167, 171 | "./node_modules/react/lib/ReactMount.js": 168, 172 | "./node_modules/react/lib/ReactDOMContainerInfo.js": 169, 173 | "./node_modules/react/lib/ReactDOMFeatureFlags.js": 170, 174 | "./node_modules/react/lib/ReactMarkupChecksum.js": 171, 175 | "./node_modules/react/lib/adler32.js": 172, 176 | "./node_modules/react/lib/findDOMNode.js": 173, 177 | "./node_modules/react/lib/getHostComponentFromComposite.js": 174, 178 | "./node_modules/react/lib/renderSubtreeIntoContainer.js": 175, 179 | "./node_modules/isomorphic-fetch/fetch-npm-browserify.js": 176, 180 | "./node_modules/whatwg-fetch/fetch.js": 177, 181 | "./node_modules/jquery/dist/jquery.js": 178, 182 | "./node_modules/react-redux/lib/index.js": 179, 183 | "./node_modules/react-redux/lib/components/Provider.js": 180, 184 | "./node_modules/react-redux/lib/utils/storeShape.js": 181, 185 | "./node_modules/react-redux/lib/utils/warning.js": 182, 186 | "./node_modules/react-redux/lib/components/connect.js": 183, 187 | "./node_modules/react-redux/lib/utils/shallowEqual.js": 184, 188 | "./node_modules/react-redux/lib/utils/wrapActionCreators.js": 185, 189 | "./node_modules/redux/lib/index.js": 186, 190 | "./node_modules/redux/lib/createStore.js": 187, 191 | "./node_modules/lodash/isPlainObject.js": 188, 192 | "./node_modules/lodash/_getPrototype.js": 189, 193 | "./node_modules/lodash/_overArg.js": 190, 194 | "./node_modules/lodash/_isHostObject.js": 191, 195 | "./node_modules/lodash/isObjectLike.js": 192, 196 | "./node_modules/symbol-observable/index.js": 193, 197 | "./node_modules/symbol-observable/ponyfill.js": 194, 198 | "./node_modules/redux/lib/combineReducers.js": 195, 199 | "./node_modules/redux/lib/utils/warning.js": 196, 200 | "./node_modules/redux/lib/bindActionCreators.js": 197, 201 | "./node_modules/redux/lib/applyMiddleware.js": 198, 202 | "./node_modules/redux/lib/compose.js": 199, 203 | "./node_modules/hoist-non-react-statics/index.js": 200, 204 | "./node_modules/invariant/browser.js": 201, 205 | "./node_modules/react-router/lib/index.js": 202, 206 | "./node_modules/react-router/lib/RouteUtils.js": 203, 207 | "./node_modules/react-router/lib/PropTypes.js": 204, 208 | "./node_modules/react-router/lib/deprecateObjectProperties.js": 205, 209 | "./node_modules/react-router/lib/routerWarning.js": 206, 210 | "./node_modules/warning/browser.js": 207, 211 | "./node_modules/react-router/lib/InternalPropTypes.js": 208, 212 | "./node_modules/react-router/lib/PatternUtils.js": 209, 213 | "./node_modules/react-router/lib/Router.js": 210, 214 | "./node_modules/history/lib/createHashHistory.js": 211, 215 | "./node_modules/history/node_modules/warning/browser.js": 212, 216 | "./node_modules/history/lib/Actions.js": 213, 217 | "./node_modules/history/lib/PathUtils.js": 214, 218 | "./node_modules/history/lib/ExecutionEnvironment.js": 215, 219 | "./node_modules/history/lib/DOMUtils.js": 216, 220 | "./node_modules/history/lib/DOMStateStorage.js": 217, 221 | "./node_modules/history/lib/createDOMHistory.js": 218, 222 | "./node_modules/history/lib/createHistory.js": 219, 223 | "./node_modules/deep-equal/index.js": 220, 224 | "./node_modules/deep-equal/lib/keys.js": 221, 225 | "./node_modules/deep-equal/lib/is_arguments.js": 222, 226 | "./node_modules/history/lib/AsyncUtils.js": 223, 227 | "./node_modules/history/lib/createLocation.js": 224, 228 | "./node_modules/history/lib/runTransitionHook.js": 225, 229 | "./node_modules/history/lib/deprecate.js": 226, 230 | "./node_modules/history/lib/useQueries.js": 227, 231 | "./node_modules/history/node_modules/query-string/index.js": 228, 232 | "./node_modules/strict-uri-encode/index.js": 229, 233 | "./node_modules/react-router/lib/createTransitionManager.js": 230, 234 | "./node_modules/react-router/lib/computeChangedRoutes.js": 231, 235 | "./node_modules/react-router/lib/TransitionUtils.js": 232, 236 | "./node_modules/react-router/lib/AsyncUtils.js": 233, 237 | "./node_modules/react-router/lib/isActive.js": 234, 238 | "./node_modules/react-router/lib/getComponents.js": 235, 239 | "./node_modules/react-router/lib/makeStateWithLocation.js": 236, 240 | "./node_modules/react-router/lib/matchRoutes.js": 237, 241 | "./node_modules/react-router/lib/RouterContext.js": 238, 242 | "./node_modules/react-router/lib/getRouteParams.js": 239, 243 | "./node_modules/react-router/lib/RouterUtils.js": 240, 244 | "./node_modules/react-router/lib/Link.js": 241, 245 | "./node_modules/react-router/lib/IndexLink.js": 242, 246 | "./node_modules/react-router/lib/withRouter.js": 243, 247 | "./node_modules/react-router/lib/IndexRedirect.js": 244, 248 | "./node_modules/react-router/lib/Redirect.js": 245, 249 | "./node_modules/react-router/lib/IndexRoute.js": 246, 250 | "./node_modules/react-router/lib/Route.js": 247, 251 | "./node_modules/react-router/lib/History.js": 248, 252 | "./node_modules/react-router/lib/Lifecycle.js": 249, 253 | "./node_modules/react-router/lib/RouteContext.js": 250, 254 | "./node_modules/react-router/lib/useRoutes.js": 251, 255 | "./node_modules/react-router/lib/RoutingContext.js": 252, 256 | "./node_modules/react-router/lib/match.js": 253, 257 | "./node_modules/react-router/lib/createMemoryHistory.js": 254, 258 | "./node_modules/history/lib/useBasename.js": 255, 259 | "./node_modules/history/lib/createMemoryHistory.js": 256, 260 | "./node_modules/react-router/lib/useRouterHistory.js": 257, 261 | "./node_modules/react-router/lib/applyRouterMiddleware.js": 258, 262 | "./node_modules/react-router/lib/browserHistory.js": 259, 263 | "./node_modules/history/lib/createBrowserHistory.js": 260, 264 | "./node_modules/react-router/lib/createRouterHistory.js": 261, 265 | "./node_modules/react-router/lib/hashHistory.js": 262, 266 | "./node_modules/redux-promise-middleware/dist/index.js": 263, 267 | "./node_modules/redux-promise-middleware/dist/isPromise.js": 264, 268 | "./node_modules/redux-thunk/lib/index.js": 265, 269 | "./node_modules/superagent/lib/client.js": 266, 270 | "./node_modules/component-emitter/index.js": 267, 271 | "./node_modules/superagent/lib/request-base.js": 268, 272 | "./node_modules/superagent/lib/is-object.js": 269, 273 | "./node_modules/superagent/lib/request.js": 270 274 | } 275 | } --------------------------------------------------------------------------------