2012-09-13 15 views
12

package.json dosyasından grunt.js'ye bir dizide geçirmenin bir yolu var mı? Birkaç farklı yol denedim ve hiçbiri işe yaramadı. Şu anda var:package.json dizisi grunt.js'ye nasıl aktarılır

/*global module:false*/ 
module.exports = function(grunt) { 

    // Project configuration. 
    grunt.initConfig({ 
    pkg: '<json:package.json>', 

    lint: { 
     files: '<%= pkg.lint.join(", ") %>' 
    } 

    // Default task 'lint qunit concat min' 
    grunt.registerTask('default', 'lint'); 
}; 

package.json

{ 
    "lint": [ 
       "grunt.js", 
       "test.js" 
      ] 
} 

Ben dizinin belirli bir endekste geçmektir bulmak mümkün olmuştur tek çözüm; Örneğin. <% = pkg.lint [0]%>. Yardımlarınız için şimdiden teşekkür ederiz!

+2

sen <% = pkg.lint%> 'yerine' denediniz mi? Tüylü görev bir dizi kabul eder, virgülle ayrılmış dosyalar listesi değil ... –

+0

Evet, bunu da denedim. Garip olan şey, dizine pkg.lint [0] gibi bir dizini iletebilmem ve belirli bir dosyayı aktarabilmem. –

+0

Hızlı hata ayıklama yöntemi olarak, son satırı grunt.registerTask ('default', 'lint', function() {console.log (grunt.config ('lint'))}); konsolda çıktı alır ... –

cevap

24

beri gibi package.json erişebilir düğümünde vadede gruntjs:

var package = require('./package.json'), 
    property = package.property[0]; 
2

<%= … %> sözdiziminin (Underscore's template system değişken enterpolasyonu) yalnızca dizeleri/nesneleri değil dizeleri gönderebileceğini düşünüyorum.

yerine bu deneyin:

lint: { 
    files: '<config:pkg.lint>' 
} 

Ben Grunt en jQuery init task bu sözdizimi bulundu.

+0

Teşekkürler Dmitry, Bunu denedim, ancak olsun "" dosyası okunamıyor (Hata kodu: ENOENT). Devam etmek için --force kullanın. Bunu denerken. –

+0

Bu gerçekten garip ve satırı 'ile kaldırırsanız bu hatayı almazsınız? Hata, dosya bulunamadığı zaman ortaya çıkıyor ... –

1
grunt.initConfig({ 
    lint: grunt.file.readJSON('package.json').lint, 
});