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


Posted in Javascript onJune 24, 2019

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)
   })
 }

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery下关于$.Ready()的分析
Dec 13 Javascript
js关于字符长度限制的问题示例探讨
Jan 24 Javascript
jQuery实现返回顶部功能
Feb 23 Javascript
Bootstrap CDN和本地化环境搭建
Oct 26 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
Dec 01 Javascript
angular.js+node.js实现下载图片处理详解
Mar 31 Javascript
原生js FileReader对象实现图片上传本地预览效果
Mar 27 Javascript
微信小程序使用gitee进行版本管理
Sep 20 Javascript
浅谈vue项目打包优化策略
Sep 29 Javascript
详解vue 兼容IE报错解决方案
Dec 29 Javascript
解决vux 中popup 组件Mask 遮罩在最上层的问题
Nov 03 Javascript
详解TypeScript的基础类型
Feb 18 Javascript
Promise扫盲贴
Jun 24 #Javascript
深入学习js函数的隐式参数 arguments 和 this
Jun 24 #Javascript
前端天气插件tpwidget使用方法详解
Jun 24 #Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
Jun 24 #Javascript
JS实现给数组对象排序的方法分析
Jun 24 #Javascript
新手快速入门JavaScript装饰者模式与AOP
Jun 24 #Javascript
Electron + vue 打包桌面操作流程详解
Jun 24 #Javascript
You might like
PHP+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
2013/11/12 PHP
通过Email发送PHP错误的方法
2015/07/20 PHP
PHP Oauth授权和本地加密实现方法
2016/08/12 PHP
JS 参数传递的实际应用代码分析
2009/09/13 Javascript
jquery获取元素值的方法(常见的表单元素)
2013/11/15 Javascript
Extjs的FileUploadField文件上传出现了两个上传按钮
2014/04/29 Javascript
用Jquery选择器计算table中的某一列某一行的合计
2014/08/13 Javascript
JavaScript中标识符提升问题
2015/06/11 Javascript
Bootstrap表单组件教程详解
2016/04/26 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
2016/10/24 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
2017/01/05 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
微信小程序实现留言板功能
2018/11/02 Javascript
小程序云开发获取不到数据库记录的解决方法
2019/05/18 Javascript
vue里的data要用return返回的原因浅析
2019/05/28 Javascript
Vue关于组件化开发知识点详解
2020/05/13 Javascript
vue项目如何监听localStorage或sessionStorage的变化
2021/01/04 Vue.js
python django 增删改查操作 数据库Mysql
2017/07/27 Python
Python使用struct处理二进制的实例详解
2017/09/11 Python
Python+OpenCV图片局部区域像素值处理详解
2019/01/23 Python
PyTorch之图像和Tensor填充的实例
2019/08/18 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
生物制药专业求职信
2014/03/11 职场文书
聘任书的写作格式及范文
2014/03/29 职场文书
邮政竞聘演讲稿
2014/09/03 职场文书
中国文明网向国旗敬礼活动精彩寄语2014
2014/09/27 职场文书
2014报到证办理个人委托书
2014/10/08 职场文书
西柏坡导游词
2015/02/05 职场文书
教师求职自荐信
2015/03/26 职场文书
浅谈Redis的keys命令到底有多慢
2021/10/05 Redis
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/07 PostgreSQL