Skip to content
返回

使用 gulp-rev-all 来解决 RequireJS 的增量更新问题

这两天陆续学习了下 gulpf.i.s。学习 gulp 纯粹是好奇它为什么会比 grunt 流行(我的结论在 #3),而学习 fis 则是为了解决一个前端工程问题。

我基于一些原因(见 #2),在公司项目里使用了 RequireJS,但我仍需要解决它的增量更新问题。单靠 RequireJS 提供的 urlArgs 是远远不够的,最好的办法应该是这篇文章里所说的那样,给每个静态文件的文件名加上 md5。

在我思考要不要脱离 fis、自己来实现的时候,我在网上搜到了一个 gulp 插件:gulp-rev-all。比起 fis 那种通过更新 RequireJS 中的 paths 设置,这个插件做的事情更符合我的意愿。它能把下面的代码:

requrie(['libs/doT'],function (d) {
    // ...
});

转换成:

requrie(['libs/doT.dfe5trf3'],function (d) {
    // ...
});

也就是说,它在给所有文件添加 hash 的同时,还会更改引用过这些文件的地方,无论是 css 里面的图片,还是 js 里面引用的模块:这样就不需要额外加载映射表了。毕竟随着项目的增长,映射表可能会变得越来越庞大。

真是踏破铁鞋无觅处,得来全不费工夫。- -

这种方式仍然有需要注意的地方:如果项目是前后端分离的,那么服务端的模板里面不应该有调用 requrie(['deps']) 的 inline script;如果不是,那就将后端模板也纳入插件的处理范围,当然这样做有点……怎么说呢,low。

那么,关于前端工程的研究总算能告一段落了。最好能做一个 demo 出来。


分享这篇文章:

上一篇
登录进 NPM 花了我两个小时
下一篇
F.I.S 前瞻