Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

通配符的排序问题

  依然是给文件名添加 hash 的坑(其实是多台机器 build 项目的坑)。shell 命令中的通配符得到的顺序是不固定的,导致了在不同的系统环境上文件合并时的顺序不一致,最终计算出的的 hash 结果也不同。其实还不仅仅是 shell 命令,npm 上的 glob 模块同样有这个问题。
  本来以为 gulp 不会有什么坑,结果发现 gulp.src 来获取的文件列表在不同的系统环境上会得到不同的顺序。其实我以前一直以为通配符会完全按照字母表排序的,简直被自己蠢哭。
  如果是 gulp 的话有个 gulp-sort 插件可以用(虽然我没看过代码,但用起来好像没遇到问题)。如果是其它东西,比如 Makefile,那么也有内置的 $(sort) 排序函数可以用。或者其他语言自己带的也通配符搜索,比如 php 的 glob 函数,那也同样可以找到办法来做排序。
  本来想给大家截图的,在我这里突然重现不了了。OS X 上的 find 命令得到的顺序是有排序的,之前在 Ubuntu 的服务器上使用 find 去搜索一个目录得到的结果就是不排序的。大家有兴趣可以试试?
  也许系统的通配符按照规范就应该是字母排序的,像 find 这样的工具搜索一个目录不能算是统配。不过无论怎么算,文件路径数组的排序问题还是需要关注一下的,在需要计算结果 hash 的时候。
网名:
34.203.213.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^