2012-09-13 7 views
12

Gibt es eine Möglichkeit, ein Array an grunt.js aus der Datei package.json zu übergeben? Ich habe ein paar verschiedene Möglichkeiten ausprobiert und keiner von ihnen scheint zu funktionieren. Ich habe zur Zeit:Wie übergeben Sie package.json array an 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" 
      ] 
} 

Die einzige Lösung, die ich in der Lage gewesen zu finden, ist in einem bestimmten Index des Arrays zu übergeben; z.B. <% = pkg.lint [0]%>. Vielen Dank im Voraus für Ihre Hilfe!

+2

Haben Sie versucht, '<% = pkg.lint%>' statt? Die Lint-Task scheint ein Array zu akzeptieren, keine durch Kommas getrennte Liste von Dateien ... –

+0

Ja, das habe ich auch versucht. Was seltsam ist, ist, dass ich einen Index an das Array übergeben kann, zum Beispiel pkg.lint [0], und es wird diese bestimmte Datei flinken. –

+0

Als eine schnelle Debug-Methode, versuchen Sie, die letzte Zeile in 'grunt.registerTask ('default', 'lint', function() {console.log (grunt.config ('lint'))});' zu ändern und zu sehen Was wird in der Konsole ausgegeben ... –

Antwort

24

Da gruntjs in Lauf in Knoten Sie die package.json wie zugreifen:

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

Ich denke, dass die <%= … %> Syntax (variable Interpolation in Underscore's template system) nur Zeichenfolgen, nicht Arrays/Objekte ausgeben kann.

Versuchen Sie stattdessen:

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

fand ich diese Syntax in Grunt jQuery init task.

+0

Danke Dmitry, Ich habe das versucht, aber ich bekomme Kann nicht lesen "" Datei (Fehlercode: ENOENT). Verwenden Sie --force, um fortzufahren. wenn Sie das versuchen. –

+0

Das ist wirklich seltsam, und Sie erhalten diesen Fehler nicht, wenn Sie die Zeile mit '' entfernen? Der Fehler scheint zu passieren, wenn die Datei nicht gefunden wird ... –

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