在压缩之前连接CSS和JS?工具?最佳实践?

3
我正在制作一个单页网站,其中包含大约十几个 .js 文件和可能半打的 .css 文件。
其中大部分 .js 文件都是 jQuery 插件。除了一个基本的 css 文件之外,CSS 文件还用于相应的 jQuery 插件。 YUI Compressor 似乎是压缩 CSS 和 JS 文件的首选。但是,它只能压缩单个文件。
我还想将我的文件组合起来(理想情况下)得到一个 .js 文件和一个 .css 文件(都经过压缩)。
有没有任何首选工具可以自动将 .js 和 .css 文件组合成一个文件,以便随后通过 YUI 压缩器运行?

我会在JS和CSS文件压缩的基础上添加gzip压缩。 - Eimantas
我也正在寻找解决此问题的方法,最好是用 PHP 编写的脚本,并在我的本地开发服务器上运行它,以便在上传到实际服务器之前将其分离、合并和压缩。 - JasonDavis
5个回答

3

不错的选择。我会探索一下!不过,我真的在寻找一个桌面解决方案,因为我工作的地方使用各种不同的服务器。最好是我们可以在桌面上处理它,然后再发送到服务器。 - DA.
如果您运行本地Apache + PHP服务器,它会起作用。我可能能将其编译为.exe文件。您使用的是Windows,是吗? - Alec Gorge
好的。请下载并解压缩此文件:http://ramblingwood.com/sandbox/js-minifier/js-minifier.zip只需将.js文件拖放到其中(您可以同时处理多个文件),它将在与原始文件相同的目录中创建一个名为total.js的文件,其中包含所有已压缩的文件。如果已经存在total.js文件,则会将其附加到该文件中。 - Alec Gorge
闲扯一下...太好了!可惜,ZIP 文件似乎已经损坏了。但这是个好主意。你会公开分享它吗(我是说,在这之外)?我认为肯定有人需要像那样简单的应用程序。 - DA.
我使用7z的超高压缩率对zip文件进行了压缩。我忘记了Windows的默认解压工具不支持这种压缩方式。我已经修复了这个问题,并重新上传了文件。我计划改进压缩算法,同时支持CSS和其他一些功能的排序。 - Alec Gorge

2

看起来不错!唉,它是Ruby写的,可能不适合我们的工作流程,但是信息很好。 - DA.

2

我前几天也问过这个问题。在厌倦了搜索网络之后,我想出了这种hackish(Windows批处理文件)的解决方案。

@echo off
set TUNA_ROOT=C:\path\to\webroot
set YUI_COMPRESSOR_PATH=C:\path\to\yuicompressor-2.4.2\build
set TEMP_JS_FILE=%TUNA_ROOT%\scripts\all_scripts_temp.js
set OUTPUT_JS_FILE=%TUNA_ROOT%\scripts\tuna_min.js
if exist "%TEMP_JS_FILE%" del "%TEMP_JS_FILE%"
if exist "%OUTPUT_JS_FILE%" del "%OUTPUT_JS_FILE%"
type "%TUNA_ROOT%\Scripts\MicrosoftAjax.js" >> "%TEMP_JS_FILE%"
echo. >> "%TEMP_JS_FILE%"
echo. >> "%TEMP_JS_FILE%"
type "%TUNA_ROOT%\Scripts\MicrosoftMvcAjax.js" >> "%TEMP_JS_FILE%"
echo. >> "%TEMP_JS_FILE%"
echo. >> "%TEMP_JS_FILE%"
rem ...and so on...
java -jar "%YUI_COMPRESSOR_PATH%\yuicompressor-2.4.2.jar" -v --charset utf-8 -o "%OUTPUT_JS_FILE%" "%TEMP_JS_FILE%"
if exist "%TEMP_JS_FILE%" del "%TEMP_JS_FILE%"

但是,如果有更自动化的方法来完成这些事情,我会非常喜欢。


谢谢分享!我会试着用一下。 - DA.

1

我最终偶然发现了这个选项:

http://johannburkard.de/blog/programming/javascript/automate-javascript-compression-with-yui-compressor-and-packer.html

这是一个批处理文件,它结合了本地版本的连接、YUI压缩器和Dean Edward的Packer。

最终,我无法让Packer在本地工作。它一直在破坏我的.js文件。

所以,我跳过了那部分,然后通过在线Packer运行了我的YUI压缩代码,只看到了1%的进一步压缩,因此省略了Packer阶段。

最终,我的解决方案使用了上面链接的说明,并稍微修改了批处理文件:

type ..\js-in* > jb.js java -jar ..\yui\build\yuicompressor-2.4.2.jar jb.js -o jb-yui.js

感谢所有其他(有效的)解决方案。有很多好信息!


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接