2013-06-16 8 views
5

'da tek bir dosya için çalıştırın. Birden çok alttakım (src, lib ve test) içeren JSHint kurulumum var. Ancak, bu kurulumu kullanmaya yeni başladıkça, birçok kaynak dosyamızda lot hata vardır. her seferinde bir dosya üzerinde çalışırkenJSHint'i Grunt

$ grunt jshint:src 
... lots of errors ... 

, yeniden tiftiği için bu tek dosya mümkündür?

$ grunt jshint:src:one.js 
... only errors from one.js ... 

Güncelleme

Bir komplikasyon izle görev da dosya türü düzenlenmiş olduğu dayanan farklı görevler ateşlemesi için birden alt görevler olmasıdır.

watch: { 
    src: { 
     files: [ SRC_DIR + "hgm*.js" ], 
     tasks: [ "jshint:src", "test" ] 
    }, 
    lib: { 
     files: [ "lib/hgm-test-setup.js", "lib/hgm.loader.js" ], 
     tasks: [ "jshint:lib", "test" ] 
    }, 
    test: { 
     files: [ "tests/**/*.js" ], 
     tasks: [ "jshint:test", "test" ] 
    } 
} 

Bunun nedeni test iken bir .jshint iddiaların gibi test etmek için kullanılan tüm globalsi belirten bir farklı birini kullanan src ve lib kullanım olmasıdır. src ve lib'u birleştirebilirim, ancak test için JSHint yapılandırma dosyasını geçersiz kılabilir miyim? Yukarıdaki sorunun cevabı gerçekten beklemiyordum veya I aradığı şeyi olmadığı için

grunt.initConfig({ 
    watch: { 
    scripts: { 
     files: ['lib/*.js'], 
     tasks: ['jshint'], 
     options: { 
     nospawn: true, 
     }, 
    }, 
    }, 
    jshint: { 
    all: ['lib/*.js'], 
    }, 
}); 

// on watch events configure jshint:all to only run on changed file 
grunt.event.on('watch', function(action, filepath) { 
    grunt.config(['jshint', 'all'], filepath); 
}); 
+0

Sublime Tex gibi IDE (ve hatta metin editörleri bir sürü gibi çağırabilirsiniz ... Bu cevabı sunmak isterim t) jshint'i takmanın bir yolu vardır. Bu tek dosya için daha iyi bir yaklaşım olabilir mi? – explunit

+0

@explunit - Bir çoğumuz NetBeans'i kullanıyoruz ve bir [JSLint eklentisi] (http://plugins.netbeans.org/plugin/40893/?show=true) varken, JSHint'i kullanmasını öğretmek için çalışma gerektirecektir. ve bizim .jshint' yapılandırma dosyaları. Grunt'ta bir çözümü tercih ederim, böylece tüm durumları ele alır. –

+0

@explunit - JSHint kullanan bir [fork] buldum (https://github.com/JeClemens/netbeans-jshint), ama yine de bir Grunt çözümü istiyorum. –

cevap

4

grunt-contrib-watch-task, görevlerinizi yapılandırabilir ve sadece değişen dosyaları tüylenme izlenme olayı nasıl kullanılacağı bir örnek sağlar '

Sen grunt jshint-file:src/filename.js

grunt.registerTask('jshint-file', 
     'Runs jshint on a file', 
     function (filePath) { 
      var reportFunc = require('jshint/src/reporters/unix').reporter 
      var optionsString = grunt.file.read('.jshintrc') 
      var options = JSON.parse(optionsString) 
      jshint(grunt.file.read(filePath), options) 
      errors = jshint.data().errors.map(function (error) { 
       var record = {}; 
       record.file = filePath; 
       record.error = error; 
       return record; 
      }); 
      console.log(reportFunc(errors)) 
     } 
    ) 
+0

Şimdi beni daha da yakınlaştırdığı için şimdi deneyeceğim, ancak hangi saat alttasının tetiklendiğine bağlı olarak olaydaki dosya yolundan daha fazlasını geçersiz kılmanın bir yolu var mı? İzleme alt işlerinin nasıl kurulduğunu ve nedenini görmek için düzenlediğimi görün. –

+0

Tabi ki, her şeyi yapılandırmanızda bulabilirsiniz. set [grunt.config.get/grunt.config.set] (http://gruntjs.com/api/grunt.config#grunt.config.get) – hereandnow78

+0

Evet, ancak hangi alt alta dayanarak yapılandırmayı değiştirmem gerekiyor kovuldu, yani, hangi dosya düzenlendi. Değiştirilmiş dosya adına "src" ve "test" kelimelerini ararım. Bu, birisi "test" kelimesiyle bir kaynak yazana kadar veya tam tersi. –