当前位置: 首页 > news >正文

webpack项目中使用grunt监听文件变动自动打包编译

【小技巧】webpack项目中使用grunt监听文件变动自动打包编译

分享背景:编写npm插件的时候,在项目里的测试html文件内引用需要从入口文件转译打包成ES5。因此测试时每次改动都需要手动需要npm run build一下,很麻烦。获知grunt有个watch功能,折腾了一下,可以做到每次js文件改动时自动build一波,很灵性。

安装依赖包

//安装grunt
npm i grunt --save-dev

//grunt-contrib-watch,用于监听文件变化
npm i grunt-contrib-watch --save-dev

//grunt-loadnpmtasks,用于注册npm安装的功能模块
npm i grunt-loadnpmtasks --save-dev

//grunt-webpack,用于在grunt中运行webpack配置
npm i grunt-webpack --save-dev

编写Gruntfile.js配置文件

module.exports = function(grunt) {
  
  grunt.initConfig({
    // 配置一个webpack打包任务,其实就是跟普通的配置文件一样,具体内容因项目而异
    webpack: {
      home: {
        // entry要填系统的文件路径,谨记
        entry: '/Users/***************************************************************/index.js',
        output: {
          // 同entry
          path: '/Users/********************************************************************/dist',
          publicPath: './dist',
          filename: 'index.js'
        },
        module: {
          rules: [
            {
              test: /\.js$/,
              loader: 'babel-loader',
              exclude: /node_modules/
            },
            {
              test: /\.(png|jpg|gif|svg)$/,
              loader: 'file-loader',
              options: {
                name: '[name].[ext]?[hash]'
              }
            }
          ]
        },
        resolve: {
          alias: {
            'vue$': 'vue/dist/vue.esm.js'
          }
        },
        devServer: {
          historyApiFallback: true,
          host: '0.0.0.0',
          openPage: 'http://localhost/',
          noInfo: true
        },
        performance: {
          hints: false
        },
        devtool: '#eval-source-map'
      }
    },
    watch: {
      files: ['**/*.js'], // 监听项目内所有的js文件
      tasks: ['webpack:home'], //js文件变化则执行webpack任务中的home任务
      options: {
        livereload: true, //若是使用grunt的临时服务器,开启此项会自动reload页面
      }
    }
  });

  //导入监听功能模块
  grunt.loadNpmTasks('grunt-contrib-watch');
  //导入webpack功能模块
  grunt.loadNpmTasks('grunt-webpack');
};

相关文章:

  • jmeter tcp取样器使用方法
  • (六)软件测试分工
  • Java面试题全集
  • 后缀数组专题
  • MySQL查询相关(初级)(全文重点)
  • 堆的实现(图片演示+文字讲解)
  • Ubuntu ko模块的编译
  • 通过git安装npm私有模块
  • python 安装 setuptools Compression requires the (missing) zlib module 的解决方案
  • jquery easyui-datagrid/treegrid 清空数据参考
  • 【微信公众号发红包转账】微信公众号上手机网页接收请求,通过公众号给用户发红包 开发流程...
  • Linux驱动开发之注册
  • java:Properties属性文件概念
  • 从0实现一个tiny react(三)生命周期
  • python练习-统计包含数字字符串元组在内的列表内数据类型个数
  • [笔记] php常见简单功能及函数
  • 《Java编程思想》读书笔记-对象导论
  • 5、React组件事件详解
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Kibana配置logstash,报表一体化
  • Laravel Mix运行时关于es2015报错解决方案
  • nfs客户端进程变D,延伸linux的lock
  • pdf文件如何在线转换为jpg图片
  • PHP 小技巧
  • React+TypeScript入门
  • SpringCloud集成分布式事务LCN (一)
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 给新手的新浪微博 SDK 集成教程【一】
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 如何在 Tornado 中实现 Middleware
  • 使用Swoole加速Laravel(正式环境中)
  • 数据仓库的几种建模方法
  • 在weex里面使用chart图表
  • hi-nginx-1.3.4编译安装
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​2021半年盘点,不想你错过的重磅新书
  • ​configparser --- 配置文件解析器​
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #Linux(Source Insight安装及工程建立)
  • (5)STL算法之复制
  • (Python) SOAP Web Service (HTTP POST)
  • (solr系列:一)使用tomcat部署solr服务
  • (zt)最盛行的警世狂言(爆笑)
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (二)Linux——Linux常用指令
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • *上位机的定义
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .NET DataGridView数据绑定说明
  • .net的socket示例
  • .net快速开发框架源码分享