我正在使用Ant来最小化项目中的所有JS文件。它将我的各种JS文件(即:file1.js,file2.js,file3.js)编译成单个文件(即:file.min.js),然后将此最小化版本与我的HTML源文件一起复制到构建文件夹中
它工作得很好但是复制到build文件夹的HTML源文件仍然引用旧的非最小化版本(file1.js,file2.js等...)
所以我的问题是,当我运行Ant构建时,是否有一个函数/功能来更改HTML源代码中的任何相关文件引用?
答案 0 :(得分:1)
最简单的方法是简单地总是使用缩小的JS。只要您不需要通过调试器运行JS或获得可理解的回溯,这就很有效。
一种名为"源地图的技术"解决了这个问题。如果使用源映射,则始终可以使用缩小版本,并且在需要调试时,调试器将按需加载未缩小版本。不幸的是,截至撰写本文时(2013年3月),源地图非常新,并且该技术需要浏览器和缩小器的支持。
如果您的HTML是通过模板生成的,那么最好将设置传递到模板中,告诉它您是否正在构建开发或生产,然后相应地更改标题文本。
如果以上解决方案都不适合您,那么您的问题的一个黑客解决方案就是在HTML中标记单独的评论,如下所示:
<!-- BEGIN DEVELOPMENT -->
<script src="src/js/file1.js"></script>
<script src="src/js/file2.js"></script>
<script src="src/js/file3.js"></script>
<!-- END DEVELOPMENT -->
<!-- BEGIN PRODUCTION
<script src="dist/js/file.js.min"></script>
END PRODUCTION -->
然后让Ant运行一些sed脚本来注释掉开发语句并添加生产语句:
# run this command to create production version of project.html
cat src/html/project.html \
| sed -e 's/<!-- BEGIN DEVELOPMENT -->/<!-- BEGIN DEVELOPMENT/' \
| sed -e 's/<!-- END DEVELOPMENT -->/ END DEVELOPMENT -->/' \
| sed -e 's/<!-- BEGIN PRODUCTION/<!-- BEGIN PRODUCTION -->/' \
| sed -e 's/ END PRODUCTION -->/<!-- END PRODUCTION -->/' \
> dist/html/project.html
我建议将此命令放入shell脚本并让Ant使用execfile运行脚本。在ant-contrib或其他地方也可能存在这种替换的第三方任务,但使用它们对于构建代码的任何人来说都是一种痛苦,因为他们必须安装您使用的相同的ant扩展。
如果您在缺少sed的非类UNIX系统(即Windows)上构建,则可以使用gnuwin32项目中的Windows版本的sed。或者只是在Virtualbox VM中的Linux上构建