写了一遍上线时给文件名追加 md5 的工具

分享 jiyinyiyong 发表于 2 年前最后回复来自 qq2850071112 2 年前

为了能配合 Gulp 用, 而且不要像 grunt-usemin 那么蛋疼, 就自己写了一个
之前还写过对于单个页面的, 想象还是稍微做得细致一点.
不过还没有详细测试, 用 CoffeeScript 调用大概是这样的:

rev = require 'pages-rev'

rev.run
  base: "#{__dirname}/example/"
  dest: "#{__dirname}/dist/"
  ignoreDirs: ['node_modules']
  entries: ['index.html', 'ejs/index/ejs']
  prefix: '/' # or cdn url

大致做了这样一些假设:

  • HTML CSS 或者模板引擎里有资源, 并且通过 (), '', "" 包裹
  • 有个对应域名的文件路径作为 base 参数, base 所有资源以此为网站根路径
  • 资源的引用当中不包含反斜杆这样的转义字符

大致的原理:

  • base 开始读取整个文件树
  • entries 开始读取, 里边遇到 () '' "" 包裹的命名就抓取出来
  • 如果命名按照路径处理后可以在文件树当中找到, 就进行替换
  • 所有文件找玩以后, 将结果写入文件系统

具体可看代码当中的 test.coffeeexample/ 组成的测试:

https://github.com/mvc-works/pages-rev#pages-rev

Gulp 当中的用法参考我的另一个项目:

https://github.com/mvc-works/workflow/blob/master/gulpfile.coffee#L114

估计会遇到一些 bug, 欢迎建议~
另外这个项目主要是为公司的代码做 rev, 所以其他的功能会放到另外的 gulp 插件做.
如果有特殊的需要(如果看得上我的代码的话)请 fork.

共收到1条回复
jiyinyiyong 2 年前 #1

补充一些问题... 后来想到的, 算是一个 bug 吧..
这个模块存在一些问题, 就是容错很差, 几种情况比如:

  • CSS 当中有注释, 而且, 其中写了不匹配的引号
  • HTML 当中有注释或者内容, 而且, 其中写了不匹配的引号

规模小或者规范做了严格限定的项目应该能用, 但是复杂的场景必需注意一下了.
如果有办法帮忙修复这个问题也请提建议啊 >_<

登录后即可参与回复