2012-08-14 14 views
8

Uygulama mantığımı,/src klasöründe saklanan, akılcı ve geliştirici dostu olması için birden çok Javascript dosyasına ayırmak istiyorum. Bu dosyalar, oluşturma işlemi sırasında /dist/app.js içine gömülmeli ve birleştirilmelidir. Zaten kullanışlı tiftik ve konsat görevleri ile geldiğinden, benim inşa süreci için grunt kullanıyorum.Tek javascript dosyalarını homurdanma ile kaplarken bağımlılıkları nasıl giderebilirim?

 

    + 
    |- grunt.js 
    |- readme 
    |-vendors 
     |-backbone.js 
    |- src 
     |- core.js 
     |- user.js 
    |- dist 
     |-app.js 

Rahatsız edici bir sorunla karşılaşıyorum. Uygulama yapısı için backbone.js'yi kullanıyorum ve kaynak dosyalarının çoğu, Backbone.Model'u genişleterek modelleri tanımlayarak başlar. Bu dosyaları işaretlerken, JSHint omurganın tanımlanmadığını ve haklı olarak omurgaların kendi dizininde kaldığından şikayet eder. Gerekli tüm komut dosyalarını doğru sırada eklemek, html'de yapıldığı varsayımdır. Her bir kaynak dosya sadece kendi kendini bilmelidir.

ben yanlış için grunt.js Lint en undef bayrağı ayarlayarak bu tanımsız uyarıları bastırmak biliyorum ama diğer tanımlanmamış değişkenlerle ilgili uyarı amacıyla bu gerçek ayarlı tutmak istiyorum benim uygulamada, yazım hataları için ortak bir işaretçi olduğu gibi. Onları lekelemeden önce hangi dosyaların ekleneceğini homurdanma (ya da teneke) söylemenin temiz bir yolu var mı? Yapım sürecimde veya uygulama mimariğimde yanlış bir şey mi yapıyorum? Yoksa bu sadece yaşamak zorunda olduğum bir şey mi?

cevap

11

jshint seçenekler grunt.js dosyasında, kullandığınız diğer kütüphanelerden gelen globalsin bir listesini belirtmek için izin:



    jshint: { 
     options: { 
     curly: true, 
     eqeqeq: true, 
     immed: false, 
     latedef: true, 
     newcap: true, 
     noarg: true, 
     sub: true, 
     undef: true, 
     boss: true, 
     eqnull: true, 
     browser: true 
     }, 

     globals: { 
     jQuery: true, 
     Backbone: true, 
     _: true 
     } 
    }, 

not altta globals ayarı. Bu, JSHint'in bu değişkenleri yoksaymasına izin verir, ancak yine de undef: true ayarınızı çalıştırır (yukarıda gösterildiği gibi).

+0

Mükemmel! Teşekkürler! Bunu yapmanın kolay bir yolu olması gerektiğinden emindim, ama homurdananların belgeleri çok net değildi ve JSHint ile daha önce hiç tecrübem yoktu. Tekrar teşekkürler! – timkg

+2

'core.js' gibi bir şey eklemek, yanıttaki 'globals' örneğine netlik kazandırır. Web Fırtına perspektifinden geliyorum, dosyama ekleyebileceğimi fark etmeden önce kendi libremde tanımlanan öğeleri nasıl ekleyeceğimi merak ediyordum. Ayrıca, seçenekleri tek bir dosyaya */* global anahtar: değer, .. */'sözdizimi – Snekse

+2

ekleyebileceğinizi de belirtmek isterim. Seçenekler nesnesinin içindeki nesne. –

0

alternatif bir yaklaşım (yani hırıltı dayanmaz) js dosyalarının içine jshint yorumunu eklemektir:

/* global Backbone, jQuery, _ */ 
+1

Ve komut dosyanızın bir global için bir değer ataması gerekiyorsa, bundan sonra ': true' (boşluk bırakmaz) ekleyin. Örneğin, '/ * global Omurga, jQuery: true, _ * /' –

İlgili konular