Как автоматизировать сжатие файлов JavaScript с помощью YUI Compressor?
YUI Compressor не принимает подстановочные параметры, поэтому я не могу запустить его так:
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
И, конечно же, имена моих файлов не одинаковы.
Есть ли способ автоматизировать это без написания кода?:)
6 ответов
Я мог бы пойти на make-файл (я думаю, что он, вероятно, был бы более продолжительным в обслуживании), но если вы хотите быстро-n-dirty пакетная команда Windows, что-то вроде следующего должно работать:
for %%a in (*.js) do @java -jar yuicompressor.jar "%%a" -o "deploy\%%a"
Компрессор YUI теперь поддерживает шаблоны, начиная с версии 2.4.4. Вы можете получить последнюю версию здесь или от YUI Git Hub.
Если вы ориентированы на Java, вы также можете использовать Ant для конвертации. Я нашел запись в блоге об Ant Taks для YUI Compressor. Отказ от ответственности: никогда не пробовал - извините
Я должен отметить, что используя GNU Make, у меня есть следующее правило:
%-min.js: %.js
${java} -jar ${compressor} $< -o ${<:.js=-min.js}
А для unix или cygwin вы можете использовать xargs или что-то вроде:
ls -1 *.js | awk '{printf ("java -jar yuicompressor.jar% s -o deploy /% s", $ 1, $ 1)}'
Передайте это в /bin/sh, когда вы будете довольны командной строкой для его выполнения.
Вам нужно будет использовать какой-то сценарий, чтобы получить список всех файлов.js, а затем запустить YUI Compressor для всех из них. В командной строке Windows что-то вроде этого должно работать:
FOR %f IN (*.js) DO java -jar yuicompressor.jar %f -o deploy\%f