Closed xccjk closed 2 years ago
// 1.js console.log(a)
// webpack.config.basic.js module.exports = { entry: './src/1.js', mode: 'development' }
// package.json script: { ... "build:basic": "webpack --config webpack.config.basic.js" }
npm run build:basic
dist/main.js
// webpack.config.watch.js module.exports = { entry: './src/1.js', mode: 'development', watch: true }
// package.json "build:watch": "webpack --config webpack.config.watch.js"
npm run build:wathc
命令行继续运行
// webpack.config.reload.js module.exports = { entry: './src/1.js', mode: 'development', watch: true, devServer: { // 为dist下静态文件提供本地服务渲染 contentBase: './dist', open: true } }
// package.json script: { ... "dev:reload": "webpack-dev-server --config webpack.config.reload.js" }
webpack-dev-server
npm run dev:reload
dist文件新增idnex.html
// 1.js import './style.css' ...
// style.css div { color: red }
// webpack.config.hmr.js // 添加devServer hot与css解析器style-loader与css-loader module.exports = { entry: './src/index-0.js', mode: 'none', watch: true, devServer: { // 为dist下静态文件提供本地服务渲染 contentBase: './dist', open: true, hot: true }, module: { rules: [ { test: /\.css$/, use: ['style-loader', 'css-loader'] } ] } }
package.json script: { ... "dev:hmr": "webpack-dev-server --config webpack.config.hmr.js" }
npm install style-loader css-loader
npm run dev:hmr
.hot-update.json
.hot-update.js
一切源代码都可以通过各种loader转换为js模块(module),模块间可以相互引用
webpack通过入口点(entry point)递归处理各模块引用关系,最后输出为一个或多个产物文件(bundle)
没一个入口点都是一个快组(chunk group),在不考虑分包的情况下,一个chunk group中只有一个chunk,该chunk包含递归分析后的所有模块。每一个chunk都有一个打包后的输出问题(asset/bundle)
webpack热更新
什么是浏览器的热更新
手动模式
npm run build:basic
,打包生成dist/main.js
文件,命令行终止watch
npm run build:wathc
,打包生成dist/main.js
文件,命令行继续运行
,修改1.js文件,重新执行打包过程,生成新的dist/main.js
文件Live Reload
webpack-dev-server
npm run dev:reload
启动服务,dist文件新增idnex.html
文件,引入打包后的js文件原理
问题
Hot Module Replacement - 模块热替换
npm install style-loader css-loader
npm run dev:hmr
,浏览器查看发现head下面多了个style标签.hot-update.json
与.hot-update.js
问题
.hot-update.json
与.hot-update.js
,然后就会重载所有请求webpack热更新原理
webpack的打包流程
打包思想
一切源代码都可以通过各种loader转换为js模块(module),模块间可以相互引用
webpack通过入口点(entry point)递归处理各模块引用关系,最后输出为一个或多个产物文件(bundle)
没一个入口点都是一个快组(chunk group),在不考虑分包的情况下,一个chunk group中只有一个chunk,该chunk包含递归分析后的所有模块。每一个chunk都有一个打包后的输出问题(asset/bundle)