2013-05-16 21 views
9

Birkaç gün sonra bir Ant derleme betiğindeki YUI Kompresörün nasıl kullanıldığını araştırdıktan sonra çalıştım. Birçok eski örnek (< 2010), bir Ant görevini oluşturmak ve derleme komut dosyanızın içinde kullanmak için var, ancak bu benim için çok fazla oldu.YUI Kompresörü javascript ve css için Ant build betiğinde nasıl kullanılır?

Örneklerin birçoğu da eskidir ve biraz daha fazla Ant veya Ant görevlerini yapılandırma bilgisi gerektirir. Aşağıdaki çözüm benim için hızlı, kolay ve etkili olan şeydi.

cevap

14

Aşağıdakiler, tüm javascript dosyalarının sıkıştırılmış tek bir dizinde olması için <target> etiketlerimden birine eklenmiştir. Bu dosyalar orijinal adlarını korur. Bunu CSS için yapmak için 'js' 'css' ye geçin ve yolları uygun şekilde güncelleyin.

Bu YUI Compressor 2.4.7 ile yapıldı ve sınıf yollarında veya diğer ayar değişikliklerinde herhangi bir değişiklik yapılmadan Eclipse Juno'da Ant derleme betiğini çalıştırıyorum.

<!-- Minimizing Javascript files --> 
    <echo message="Compressing Javascript files at location: ${build.root}/resources/js/*.js" /> 
    <java jar="c:/dev/lib/yuicompressor-2.4.7/build/yuicompressor.jar" fork="true"> 
     <arg value="${build.root}/resources/js/*.js" /> <!-- input path for JS files --> 
     <!--<arg value="-v" /> --><!-- Turn on verbose --> 
     <arg value="-o" /> 
     <arg value="'.js$:.js'" /> 
     <arg value="${build.root}/resources/js/*.js" /> <!-- output path for JS files --> 
     <classpath> 
      <pathelement location="c:/dev/lib/yuicompressor-2.4.7/build/yuicompressor.jar"/> 
     </classpath> 
    </java> 

Lütfen bu cevabı iyileştirmekten çekinmeyin. Yukarıdaki çözüm benim için çalışıyor, ama ben uzman değilim.

+0

nasıl tüm .js sıkıştırmak için

dosyası bir .js'ye dosya mi? ? yukarıdaki komut dosyası .js dosyalarını kendi dosyalarına sıkıştırdığı için ... –

+2

- /home/shwetanka/projects/webapp/webapp/content/js/mobile/*.js dosyasının yolu için FileNotFoundException değerini veriyor. – Shwetanka

+0

@Shwetanka Eğer bir sorunuz varsa, kendi soru dizinizi oluşturmalısınız ve bu cevabı sorunun cevabını vermelisiniz. –

5

Önceki yanıtla birlikte FileNotFoundException'u aldığımdan bu yana dosyaları küçültmek için aşağıdaki çözümü kullanıyorum.

CSS'yi küçültmek için, js'u aşağıdaki css ile değiştirin. http://code.google.com/p/yui-compressor-ant-task/ veya bu bir: uygulamak daha neater görünüyor https://github.com/parambirs/ant-yui-compressor

<target name="compress" description="compress the JS files"> 
    <copy todir="temp/js" overwrite="yes"> 
     <fileset dir="original/js"/> 
    </copy> 
    <apply executable="java" parallel="false" dest="temp/js"> 
     <fileset dir="temp/js" includes="**/*.js" /> 
      <arg line="-jar"/> 
      <arg path="test_lib/yuicompressor-2.4.8.jar" /> 
      <arg line="-v"/> 
      <srcfile/> 
      <arg line="-o"/> 
      <mapper type="glob" from="*.js" to="*-min.js"/> 
      <targetfile/> 
    </apply> 
    <move todir="original/js" overwrite="true"> 
     <fileset dir="temp/js" /> 
     <mapper type="glob" from="*-min.js" to="*.js"/> 
    </move> 
</target> 
+0

Aynı problemi, html5boilerplate projesinden birine dayalı bir Ant betiğinde de yaşıyordum. Geçici bir dizine gitme çözümünüz ilk önce onu düzeltmiş gibi görünüyor. – Barrie

0

Bu karınca görevi kullanmayı tercih ediyorum.

+0

Çok güzel bir çözüm. Yapılandırma çok basit görünüyor. –

1

Victor'un kodunu denedim. Aslında gerekli olan geçici bir dizin yoktu. Bu kodu kullandım ve benim için çalıştı.

<apply executable="java" parallel="false" > 
       <fileset dir="${build.root}/resources/js" includes="**/*.js" /> 
        <arg line="-jar"/> 
        <arg path="${basedirectory}/yuicompressor-2.4.8.jar" /> 
        <srcfile/> 
        <arg value="-o" /> 
        <arg value="'.js$:.js'" /> 
        <!-- output path for JS files --> 
        <arg value="${build.root}/resources/js/*.js" /> 
        <arg line="--nomunge" /> 
        <arg line="--preserve-semi" />    
      </apply> 

+0

Zaten mevcut olan '' .min.js '' dosyasının yeniden sıkıştırılmasını engellemek için sağlanan çözümü nasıl değiştirmeliyim. '"* /. Min.js" ifadesinin yanı sıra "**/min *" değerini "" ile "hariç tut" özelliğini eklemeye çalıştım ancak bu işe yaramıyor. –

+0

"Hariç tut", "hariç tut" değil.