2012-09-13 5 views
12

은 package.json 파일에서 grunt.js에 배열을 전달하는 방법입니까? 나는 여러 가지 방법으로 시도했지만 그 중 아무 것도 작동하지 않는 것 같습니다. 내가 현재 가지고 :package.json 배열을 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" 
      ] 
} 

내가 배열의 특정 인덱스에 전달하는 것입니다 찾을 수 있었던 유일한 해결책; 예 : < % = pkg.lint [0] %>. 미리 도움을 주셔서 감사합니다!

+2

당신이 <% = pkg.lint %>'대신'시도해 봤어? lint 작업은 쉼표로 구분 된 파일 목록이 아니라 배열을 허용하는 것으로 보인다 ... –

+0

그래, 나는 그것을 시도했다. 이상한 점은 pkg.lint [0]와 같은 배열의 인덱스를 전달할 수 있다는 것입니다. 그러면 특정 파일이 lint됩니다. –

+0

빠른 디버깅 방법으로 마지막 줄을 'grunt.registerTask ('default ','lint ', function() {console.log (grunt.config ('lint '))});'로 변경하고 콘솔에서 출력되는 내용은 무엇입니까? –

답변

24

부터 당신이 좋아하는 package.json에 액세스 할 수 있습니다 노드에서 실행에 gruntjs :

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

<%= … %> 구문 (변수 보간 Underscore's template system)은 배열/개체가 아닌 문자열 만 출력 할 수 있다고 생각합니다.

대신을 시도해보십시오

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

나는 그런트의 jQuery init task에서이 구문을 발견했다.

+0

감사 드미트리, 나는 그것을 시도했지만, 얻을 수있다. ""파일을 읽을 수 없다 (오류 코드 : ENOENT). 계속하려면 --force를 사용하십시오. 시도 할 때. –

+0

정말 이상합니다.''로 줄을 지우면이 오류가 발생하지 않습니까? 파일을 찾을 수 없을 때 오류가 발생하는 것 같습니다 ... –

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