2016-04-12 14 views
3

Bir web uygulaması oluşturmak için Shake kurmaya çalışıyorum. Oluşturma işlemimin sonunda ortaya çıkan .js ve .css dosyalarını bir içerik karmasına göre (önbellek bozma amacıyla) yeniden adlandırmak istiyorum. Bu, app-<hash>.min.js gibi bir şeye benzeyen dosyaların son isimlerini bilmediğim anlamına gelir.Sarsıntı: dosya adı bilinmiyorsa nasıl devam edilir

son index.html ihtiyaçlarını oluşturmak için kural adları hakkında bilmek beri, ben

"index.html" %> \out -> do 
    need [ "revJsAndCssFiles" ] 
    ... 

phony "revJsAndCssFiles" $ do 
    ... -- Hash and copy files to appropriate locations 
çizgisinde bir phony eylemini kullanarak denedim

"index.html" %> \out -> do 
    need [ "app-<hash>.min.js" ] 
    ... 

gibi bir şey gerekir

phony eylemi için bir dosya oluşturduğu için bu çalışma çirkin görünüyor.

Bu probleme yaklaşmanın en iyi yolu ne olurdu?

cevap

2

index.html, hashed Javascript dosyalarına başvurmalıdır? Eğer öyleyse, bir yaklaşımdır: Burada

"hash-js.txt" %> \out -> do 
    src <- readFile' "app.min.js" 
    let file = "app-" ++ show (hash src) ++ ".min.js" 
    writeFile' file src 
    writeFile' out file 

"index.html" %> \out -> 
    js <- readFile' "hash-js.txt" 
    writeFile' out $ "<script src='" ++ js ++ ">" 

sahip bir sürekli adlandırılmış kural her ikisi (bilinmeyen bir yerde) istediğiniz dosyayı üretir (hash-js.txt) ve (sabit konuma) o dosyanın adı . Bu şekilde, index.html numaralı dosyaya ihtiyaç duyduğunuzda, her ikisi de ona bağlıdır ve sonuçta ortaya çıkacak dosya adını elde edersiniz.

Bu hile, index.html dosya adında bir dosyaya gerek duymazsanız, aynı derecede iyi çalışır - o zaman dosyanın içeriğini atarsınız - ama biraz daha çirkin hisseder.

İlgili konular