Buradaki partiye gerçekten geç kaldı, ancak bunun birisinin hala farklı bir cevap aramasına yardımcı olabileceğini düşündüm:
YUI Compressor'ı kullanmaya çalıştıktan sonra, jQuery ve Prism'in daha yeni sürümleriyle (projem için ihtiyacım olan ve tek bir dosyaya sıkıştırılmasını istediğim iki ana 3. parti JS kitaplığı) uyumsuz olduğu için hayal kırıklığına uğradım. Ben kullanmaya karar Yani terser ES6 + 'yı destekleyen çirkinleştirmek-JS bir çatal. <exec>
Görevi doğrudan kullanarak çalıştırmayı başaramadım , ancak Windows komut satırı yöntemini kullanmak en azından Win 10 için çalışıyor (başka türlü çalışamayacağını söylemiyorum, ancak bu çok kolay bir çözümdü). Path sistem değişkenine başka bir şey eklemenize gerek yoktur (Node.JS genellikle kurulum sırasında eklendiğinden). İlk önce ANT <concat>
görevini büyük, sıkıştırılmamış bir dosya yapmak için kullanıyorum. <fileset>
Sırayı koruyacağı için kullanın (yine de önemliyse).
<concat destfile="${js-big-file}" encoding="UTF-8" outputencoding="UTF-8" fixlastline="true">
<filelist refid="js-input-filelist"/>
</concat>
Ardından <exec>
görevi Terser gibi herhangi bir NPM programını çalıştırmak için kullanın . Bu görevdeki Apache kılavuz sayfası, bunun .bat dosyalarını çalıştırmak için Windows geçici çözümü olduğunu belirtti, ancak gerçekten hemen hemen her komut satırı uygulamasını çalıştırmanıza izin veriyor ( <exec>
gizemli bir şekilde başka türlü bulamayanlar bile ).
<exec executable="cmd">
<arg value="/c"/>
<arg value="terser"/>
<arg value="${js-big-file}" />
<arg value="-o" />
<arg value="${smaller-js-file}"/>
</exec>
Birleştirmek? Bir ANT oluşturma komut dosyasının (diğer şeylerin yanı sıra özel JavaScript'i desteklemek için bir DITA Açık Araç Seti eklentisinin bir parçasıdır - kendi başına bir Java Web uygulaması değil, HTML5 çıktısı oluşturmak için Java kullanmak), dolayısıyla entegrasyon bunları eklemekten çok daha fazlası değildi görevleri yeni bir hedefe (varsayılanların ayarlanması ve giriş parametrelerinin kontrol edilmesiyle ilgili daha fazla kod var!).
Etkinleştirmesi / Devre Dışı Bırakması Kolay mı?Benim durumumda, JS dosyasının oluşturulmasını ve küçültülmesini dahil etmek için ANT Yapısına geçtiğim bir parametre var. Yani evet, bu hedefi yalnızca param'ı 'Evet' olarak ayarlarsam gerçekleştirir. Bu, bir ANT yapısında kurmak oldukça kolay bir şey.
Şeffaf Şimdiye kadar, dahil ettiğim birkaç JS dosyası üzerinde hiçbir etkisi yok gibi görünüyor. Bunlardan bazıları benim (ve hiçbir şekilde JS uzmanı değilim) ve bahsettiğim gibi, ortak JS kitaplıkları.
Minifier terser, ama sadece bu yöntemle komut satırı girişi ile minified herhangi biri hakkında kullanabilirsiniz.
Eksik özellikler? Terser yalnızca JavaScript ile çalışır. CSS dosyalarım için de aynısını yapmak istersem (ki bunu yaparım), YUI Compressor kullanırım.
Gibi şu anda aktif bir proje ve iyi bir desteğe sahip. Artı, mevcut uygulama (yalnızca ANT aracılığıyla<exec>
hedefi ), yolda başka bir şey kullanmam gerektiğinde küçültme cihazlarını değiştirmeme izin veriyor.
Değil sevdiniz o Node.JS. gerektirir Yani Node.JS'ye karşı hiçbir şey yok, dikkat edin, sadece bu özel projenin başka türlü buna ihtiyacı yok. Bunun için YUI Compressor gibi bir Java .jar dosyası kullanmayı tercih ederim (İhtiyaç duyarsam bunu bir eklenti ile kolayca dağıtabilirim).