Ant最小化JS文件的问题

时间:2013-03-21 00:40:14

标签: jquery ant build minimize

我正在使用Ant来最小化项目中的所有JS文件。它将我的各种JS文件(即:file1.js,file2.js,file3.js)编译成单个文件(即:file.min.js),然后将此最小化版本与我的HTML源文件一起复制到构建文件夹中

它工作得很好但是复制到build文件夹的HTML源文件仍然引用旧的非最小化版本(file1.js,file2.js等...)

所以我的问题是,当我运行Ant构建时,是否有一个函数/功能来更改HTML源代码中的任何相关文件引用?

1 个答案:

答案 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上构建

相关问题