Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用YUI Compressor自动化JavaScript文件压缩?_Javascript_Batch File_Yui - Fatal编程技术网

如何使用YUI Compressor自动化JavaScript文件压缩?

如何使用YUI Compressor自动化JavaScript文件压缩?,javascript,batch-file,yui,Javascript,Batch File,Yui,不接受通配符参数,因此无法按如下方式运行: C:>java -jar yuicompressor.jar *.js 但我有500多个文件,不希望创建这样的批处理文件: C:>java -jar yuicompressor.jar file1.js -o deploy\file1.js C:>java -jar yuicompressor.jar file2.js -o deploy\file2.js ... C:>java -jar yuicompressor.jar

不接受通配符参数,因此无法按如下方式运行:

C:>java -jar yuicompressor.jar *.js
但我有500多个文件,不希望创建这样的批处理文件:

C:>java -jar yuicompressor.jar file1.js -o deploy\file1.js
C:>java -jar yuicompressor.jar file2.js -o deploy\file2.js
...
C:>java -jar yuicompressor.jar file500.js -o deploy\file500.js
当然,我的文件名并不是如此统一

有没有办法在不编写任何代码的情况下自动执行此操作?:)

我可能会选择makefile(我认为从长远来看,它可能更易于维护),但如果您想要一个quick-n-dirty Windows批处理命令,以下类似命令应该可以工作:

for %%a in (*.js) do @java -jar yuicompressor.jar "%%a" -o "deploy\%%a"
FOR %f IN (*.js) DO java -jar yuicompressor.jar %f -o deploy\%f

您需要使用某种脚本来获取所有.js文件的列表,然后在所有这些文件上运行YUI压缩程序。在windows命令提示符下,类似这样的操作应该可以工作:

for %%a in (*.js) do @java -jar yuicompressor.jar "%%a" -o "deploy\%%a"
FOR %f IN (*.js) DO java -jar yuicompressor.jar %f -o deploy\%f

对于unix或cygwin,您可以使用xargs或类似的工具:

ls-1*.js | awk'{printf(“java-jar yuicompressor.jar%s-o deploy/%s”,$1,$1)}'


当您对命令行的执行感到满意时,将其传输到/bin/sh。

我应该提到,使用GNU Make,我有以下规则:

%-min.js: %.js
    ${java} -jar ${compressor} $< -o ${<:.js=-min.js}
%-min.js:%.js

${java}-jar${compressor}$<-o${如果你是面向Java的,你也可以使用Ant进行转换。我发现了一个关于an的例子。免责声明:从未尝试过它-抱歉

YUI compressor现在支持通配符,从版本2.4.4开始。你可以从中获得最新版本或。

如果文件名中没有空格,效果很好。谢谢!你应该能够抛出引号在那里-我将在中编辑它。是的,成功了!我需要克服的最后一件事是能够从文件夹A运行此批处理文件,将所有的.js文件放在文件夹B中,并将输出文件放在文件夹C中。我担心这可能会进入“高级批处理脚本地狱”…您可以使用位置参数来使用%1%2%3等批处理文件。但是,当您尝试合并和引用可能有空格的实体时,会遇到巨大问题。疯狂随之而来。无论如何,谢谢。我始终可以从所有.js文件所在的文件夹运行批处理。因此,这并不重要。YUICompressor支持从版本2.4.4开始的通配符。下载链接见下文。对于递归版本,请使用find而不是lsWhy's using
${,因为关于GNU Make有很多我不知道的地方。另一个ant任务可以在上找到,我在几个项目中使用它来自动压缩js/css文件。作为作者,我可能有点偏见。