2012-09-13 7 views
12

czy istnieje sposób przekazania tablicy do pliku tekst.js z pliku package.json? Próbowałem na kilka różnych sposobów i żaden z nich nie działa. Obecnie mam:Jak przekazać w tablicy package.json do pliku grunt.js

/*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" 
      ] 
} 

Jedynym rozwiązaniem, które udało mi się znaleźć to przekazać w określonym indeksem tablicy; na przykład <% = pkg.lint [0]%>. Z góry dziękujemy za pomoc!

+2

Próbowałaś '<% = pkg.lint%>' zamiast? Zadanie lint wydaje się akceptować tablicę, a nie listę plików rozdzielonych przecinkami ... –

+0

Tak, próbowałem również tego. Dziwne jest to, że mogę przekazać do tablicy indeks, taki jak pkg.lint [0], i to utrudni ten konkretny plik. –

+0

Jako metodę szybkiego debugowania, spróbuj zmienić ostatnią linię na 'grunt.registerTask ('default', 'lint', function() {console.log (grunt.config ('lint'))});' i zobacz co otrzymuje dane wyjściowe w konsoli ... –

Odpowiedz

24

Od gruntjs w biegu w węźle można uzyskać dostęp do package.json jak:

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

Myślę, że składnia <%= … %> (interpolacja zmienna w Underscore's template system) może wysyłać tylko ciągi, a nie tablice/obiekty.

Spróbuj to zamiast:

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

znalazłem tej składni w Grunt na jQuery init task.

+0

Dzięki Dmitry, Próbowałem, ale dostaję Nie można odczytać pliku "" (Kod błędu: ENOENT). Użyj --force, aby kontynuować. podczas próby. –

+0

To jest naprawdę dziwne i nie dostaniesz tego błędu, jeśli usuniesz linię za pomocą ''? Błąd pojawia się, gdy plik nie zostanie znaleziony ... –

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