webpack 各种好用,打算把 sf.gg 的前端构建工具从 gulp+requirejs 尝试着迁移到 webpack,没想到刚迈出第一步随即翻车。

因为 sf.gg 本质是个后端路由项目,每个页面一个打包的 js 文件,所以需要多个入口,即 multi-entry-points。简单地修改了三个页面,将 AMD 辛苦改成了 CommonJS 形式(虽然 webpack 也支持 AMD,但是我觉得如果要修改就要改地彻底)。然后用 webpack-dev-server 启动前端 server,三个入口,打包共用时 20s 左右,这时还不觉得不妥,然后修改了某个入口文件,保存,rebuild,同样耗时大概 20s,我看了命令行的输出,看起来像是 webpack 将所有入口都重新编译了一把。这就尴尬了,页面有一百多个,如果重新编译,那岂不是要完蛋?

难道 webpack 不会增量编译?如此不智能?带着这个疑问,我开始搜索答案,但是终究没有找到解决办法,最后抱着试试看的心情在知乎 提问,一波是我关注很久的前端大拿,他觉得是我配置错了,我当时觉得其实我没有任何配置啊,随即决定写个 demo 反驳,写着写着我惊讶地发现把原来三个入口的代码都删地只剩下一行,打包都要接近 10s,最后我终于定位到了错误,没错,就是他!uglifyjs-webpack-plugin!我在开发阶段用了 uglify 的压缩插件,看起来只要有一处修改,这个插件都会遍历 webpack 配置的所有入口!然后就悲剧了 ...

而我一直纠结的是如何使得 webpack 支持增量编译,但是其实人家本身就做了这个功能:

When the build completes, Webpack does not exit but stays active, watching the source files for changes. If Webpack detects a source file change, it rebuilds only the changed module(s).

最后的最后,切记千万别在开发阶段压缩代码了!!!

千万别在开发阶段用 uglify 插件了!(from Requirejs to Webpack)的更多相关文章

  1. MS CRM 2011的自定义和开发(11)——插件(plugin)开发(三)

    http://www.cnblogs.com/StoneGarden/archive/2012/02/06/2340661.html MS CRM 2011的自定义和开发(11)——插件(plugin ...

  2. MS CRM 2011的自定义和开发(11)——插件(plugin)开发(一)

    http://www.cnblogs.com/StoneGarden/archive/2012/02/02/2336147.html MS CRM 2011的自定义和开发(11)——插件(plugin ...

  3. MS CRM 2011的自定义和开发(11)——插件(plugin)开发(二)

    http://www.cnblogs.com/StoneGarden/archive/2012/02/06/2339490.html MS CRM 2011的自定义和开发(11)——插件(plugin ...

  4. Grunt 使用(二)uglify插件压缩javascript代码

    本文在配置grunt基本环境的基础下,讲解如何使用grunt-contrib-uglify进行javascript压缩 本文只介绍了grunt-contrib-uglify插件的一种压缩方式适用于大部 ...

  5. 基于JRebel开发的MySQL Explain插件

    前言 我们在使用数据库时,为了使业务系统性能达到最优,往往都需要避免慢SQL查询,不能等到线上告警了再排查是否为慢SQL导致.在开发阶段,每个开发人员就应该针对自己写的SQL看是否可能为慢SQL,从而 ...

  6. Notepad++进行php开发所必需的插件

    Notepad++进行php开发所必需的插件有那些呢? 1. Compare: 可以用来比较两个文件不同之处. 2. Explorer:文件浏览器插件,包含收藏夹.Session保存功能.可与NppE ...

  7. 我利用网上代码开发的JQuery图片插件

    我利用网上代码开发的JQuery图片插件 代码如下 (function($){ $.fn.FocusPic = function(options){ var defaults = { interval ...

  8. Cordova - 与iOS原生代码交互2(使用Swift开发Cordova的自定义插件)

    在前一篇文章中我介绍了如何通过 js 与原生代码进行交互(Cordova - 与iOS原生代码交互1(通过JS调用Swift方法)),当时是直接对Cordova生成的iOS工程项目进行编辑操作的(添加 ...

  9. (转)jQuery Mobile 移动开发中的日期插件Mobiscroll 2.3 使用说明

    (原)http://www.cnblogs.com/hxling/archive/2012/12/12/2814207.html jQuery Mobile 移动开发中的日期插件Mobiscroll ...

随机推荐

  1. Android DVM

    1.DVM(Dalvik Virtual Machine)概述 是Google公司自己设计用于Android平台的Java虚拟机 支持已经转化为.dex(及Dalvik Excutable)格式的Ja ...

  2. python __getattr__ 巧妙应用

    在之前的文章有提到__getattr__函数的作用: 如果属性查找(attribute lookup)在实例以及对应的类中(通过__dict__)失败, 那么会调用到类的__getattr__函数, ...

  3. spring cloud sidecar

    用spring cloud sidecar的整合异构语言,以前做过没有做笔记,现在再做由于各种坑又浪费了一天,这里记一下 首先是官网:http://cloud.spring.io/spring-clo ...

  4. 用户信息文件/etc/passwd,影子文件/etc/shadow,组信息文件/etc/group,组密码文件/etc/gshadow,用户管理相关文件

    /etc/passwd man 5 passwd查看配置文件信息 account:password:UID:GID:GECOS:directory:shell 帐号:密码:用户ID:组ID:一般的信息 ...

  5. 【python】for循环

    >>> exp='welcom to python'>>> for i in exp: print(i,end=' ') w e l c o m t o p y t ...

  6. JAVA NIO学习一:NIO简介、NIO&IO的主要区别

    在前面学习了IO之后,今天我们开始进入NIO学习环节,首先我们会NIO做一个简单的介绍,让大家认识NIO,然后会和IO进行一个对比认识进行区分.好了,下面我们就开始学习: 一.NIO简介 1.概述 从 ...

  7. springboot 入门四-时间类型处理

    springboot 自带了jackson来处理时间,但不支持jdk8 LocalDate.LocalDateTime的转换. 对于Calendar.Date二种日期,转换方式有二种: 一.统一app ...

  8. iOS学习——内存泄漏检查及原因分析

    项目的代码很多,前两天老大突然跟我说项目中某一个ViewController的dealloc()方法没有被调用,存在内存泄漏问题,需要排查原因,解决内存泄漏问题.由于刚加入项目组不久,对出问题的模块的 ...

  9. MySQL in or效率对比

    本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/60 考虑如下两个sql: select * from table ...

  10. python 将文件夹内的图片转换成PDF

    import os import stringfrom PIL import Imagefrom reportlab.lib.pagesizes import A4, landscapefrom re ...