2012-09-13 9 views
12

¿hay alguna forma de pasar una matriz a grunt.js desde el archivo package.json? Intenté algunas maneras diferentes y ninguna de ellas parece funcionar. Actualmente tengo:Cómo pasar en la matriz package.json a 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" 
      ] 
} 

La única solución que he podido encontrar es pasar de un índice específico de la matriz; p.ej. <% = pkg.lint [0]%>. ¡Gracias de antemano por su ayuda!

+2

¿Usted intentó '<% =% pkg.lint>' en lugar? La tarea de la pelusa parece aceptar una matriz, no una lista de archivos separados por comas ... –

+0

Sí, lo he intentado también. Lo extraño es que puedo pasar un índice a la matriz, como pkg.lint [0] y perderá ese archivo específico. –

+0

Como método de depuración rápida, intente cambiar la última línea a 'grunt.registerTask ('default', 'lint', function() {console.log (grunt.config ('lint'))});' y vea lo que sale en la consola ... –

Respuesta

24

Desde gruntjs en ejecución en el nodo se puede acceder al package.json como:

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

Creo que la sintaxis <%= … %> (interpolación variable en Underscore's template system) solo puede generar cadenas, no matrices/objetos.

Tal vez puedas probar:

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

me encontré con esta sintaxis en ronco de jQuery init task.

+0

Gracias Dmitry, Intenté eso, pero obtengo No se puede leer el archivo "" (Código de error: ENOENT). Use --force para continuar. al intentar eso. –

+0

Esto es realmente extraño, y no obtiene este error si elimina la línea con ''? El error parece ocurrir cuando el archivo no se encuentra ... –

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