最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

webpack自动打包和热更新的实现方法

来源:动视网 责编:小采 时间:2020-11-27 21:54:43
文档

webpack自动打包和热更新的实现方法

webpack自动打包和热更新的实现方法:webpack常用配置 webpack dev server 功能:自动打包文件 配置dev server:在webpack.config.client.js中配置 const path = require('path'); const HTMlPlugin = require('html-webpack-plugin'); //
推荐度:
导读webpack自动打包和热更新的实现方法:webpack常用配置 webpack dev server 功能:自动打包文件 配置dev server:在webpack.config.client.js中配置 const path = require('path'); const HTMlPlugin = require('html-webpack-plugin'); //


webpack常用配置

webpack dev server

  • 功能:自动打包文件
  • 配置dev server:在webpack.config.client.js中配置
  •  const path = require('path');
     const HTMlPlugin = require('html-webpack-plugin');
     
     // 判断是否是开发环境
     const isDev = process.env.NODE_ENV === 'development'
     
     
     const config = {
     entry: {
     app: path.join(__dirname,'../client/app.js')
     },
     output: {
     filename: '[name].[hash].js',
     path: path.join(__dirname,'../dist'),
     publicPath: '/public'
     },
     module: {
     rules: [
     {
     test: /.jsx$/,
     loader: 'babel-loader'
     },
     {
     test: /.js$/,
     loader: 'babel-loader',
     exclude: [
     path.join(__dirname,'../node_modules')
     ]
     }
     ]
     },
     plugins:[
     new HTMlPlugin({
     template:path.join(__dirname,'../client/template.html')
     })
     ]
     }
     
     //新增
     if(isDev){
     // 开发环境
     config.devServer = {
     host: '0.0.0.0',//可以使用ip访问
     port:'8888',
     contentBase: path.join(__dirname,'../dist'),//打包后的文件
     overlay:{
     errors:true //直接在网页上显示错误
     },
     publicPath:'/public',
     historyApiFallback:{
     index:'/public/index.html'
     }
     
     }
     }
     module.exports = config;
    
    

    在package.json中增加一条命令来进行自动打包

    cross-env是为了兼容mac windows liunx的环境变量,需要安装。

    npm install cross-env -D
     "dev:client": "cross-env NODE_ENV=development webpack-dev-server --config build/webpack.config.client.js"
    

    hot module replacemennt

    功能:自动刷新页面

    配置hot module:

    安装react-hot-loader

    npm install react-hot-loader -D

    在webpack.config.client.js中配置

     const webpack = require('webpack')
     if(isDev){
     config.entry ={
     app:[
     "react-hot-loader/patch",
     path.join(__dirname,'../client/app.js')
     ]
     }
     ...省略
     config.plugins.push(new webpack.HotModuleReplacementPlugin())
     }
    
    

    在client/app.js中配置

     ...省略
     import { AppContainer } from 'react-hot-loader';
     const root = document.getElementById('root')
     const render = Component =>{
     aaa.hydrate(
     <AppContainer>
     <Component />
     </AppContainer>,
     root
     )
     }
     render(App)
     if(module.hot){
     module.hot.accept('./App.jsx',()=>{
     const NextApp = require('./App.jsx').default
     render(NextApp)
     })
     }
    

    通过以上配置就能达到局部热更新了,修改代码,页面会实时修改,不会刷新页面了。

    文档

    webpack自动打包和热更新的实现方法

    webpack自动打包和热更新的实现方法:webpack常用配置 webpack dev server 功能:自动打包文件 配置dev server:在webpack.config.client.js中配置 const path = require('path'); const HTMlPlugin = require('html-webpack-plugin'); //
    推荐度:
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top