2014-09-24 2 views
2

나는 꿀꿀 거리다.그 루프는 For 루프에서 실행

단일 빌드에서 작동하는 gruntfile이 있습니다. 프로세스를 완료하기 위해 함께 연결되는 여러 대상이 있습니다. 문제는 변수 데이터를 사용하여 여러 빌드를 만들어야한다는 것입니다. 내 gruntfile에서이 작업을 수행하는 방법을 알아 내려고 노력 중입니다.

오늘, 빌드를 할, 난 그냥

grunt --foo=bar build 

또는

grunt --foo=baz build 

내가하고 싶은 무엇을 실행해야하고, 할 시도, 빌드 모두를 만드는 것입니다 배열을 사용하여 foo 데이터를 정의하는 대상 :

grunt.registerTask('build-all', function() { 
    var foos = ["bar", "baz"]; 
    for (var i in foos) { 
     grunt.config.set("foo", foos[i]); 
     grunt.task.run("build"); 
    } 
}); 

보기에 보면 실행 작업이 차단되지 않는 것으로 보입니다. 그리고 이것은 "foo"가 첫 번째 실행 전에 "baz"로 설정되어 동일한 값에 대해 두 번 실행된다는 것을 의미합니다.

이 상황에서 인수/옵션을 설정하는 더 좋은 방법이 있습니까? 또는 차단 방식으로 작업을 실행 하시겠습니까?

+3

[grunt-multi] (https://www.npmjs.org/package/grunt-multi)와 같은 것을 사용해야하는 것처럼 보입니다. –

+0

고마워, 실제로 저에게 효과적이었습니다. Unfrotunately, 나는 대답으로 의견을 받아 들일 수 없어, 그래서 당신을위한 포인트 : ( –

답변

4

최근에 같은 문제에 부딪혔습니다.이 문제를 해결하기 위해 grunt-galvanize을 작성했습니다. 여기 당신의 예에 적용, 작동 방법은 다음과 같습니다이 galvanizeConfig에 지정된 옵션/CONFIGS의 각과 빌드 작업을 실행합니다

grunt.registerTask('build-all', function() { 
    var foos = ["bar", "baz"]; 
    var galvanizeConfig = []; 

    for (var i in foos) { 
     galavanizeConfig.push({configs: {foo: foos[i]}}); 
    } 
    grunt.option('galvanizeConfig', galvanizeConfig); 
    grunt.task.run(['galvanize:build']); 
}); 

.

추신. 또한 동시성이 필요한 곳에서는 grunt-multi를 사용하지만 동시 처리가 필요하지 않은 경우에는 grunt-galvanize가 훨씬 간단한 도구입니다.