2015-06-18 18 views
3

我們使用Grunt在一個構建中構建多個但類似的應用程序。 這是一個相當複雜和龐大的項目,每個應用程序都有一個文件夾,並且有一個名爲share的文件夾與大量共享組件。如何在Grunt中運行多個業力目標?

多個因緣目標的名字(字符串)
角依賴內噴射和我們的應用程序有類似的HomeController,MenuController相同名稱的文件。這迫使我們爲每個應用程序分割業務目標,因此依賴性只能從正在測試的共享和特定應用程序中加載。

致命錯誤
當使用咕嚕運行業力的目標只運行了第一個成功和失敗運行第二個。 Fatal error: listen EADDRINUSE錯誤與某個正在使用的端口有關。

噶配置(簡體)

module.exports = function(config) { 
    'use strict'; 

    config.set({ 
    autoWatch: false, 
    basePath: '../', 
    frameworks: ['jasmine'], 
    exclude: [], 
    browsers: ['PhantomJS'], 
    plugins: [ 
     'karma-html-reporter', 
     'karma-junit-reporter', 
     'karma-coverage', 
     'karma-phantomjs-launcher', 
     'karma-jasmine', 
     'karma-brackets' 
    ], 
    singleRun: false, 
    colors: true, 
    logLevel: config.LOG_DEBUG 
    }); 
}; 

咕嚕 - 卡瑪配置

var dep = [ 
    'bower_components/**/*.js', 
    'app/shared/**/*.js', 
]; 

module.exports = { 
    options: { 
    configFile: 'test/karma.conf.js', 
    reporters: ['brackets', 'html', 'junit', 'coverage'], 
    browsers: ['PhantomJS'], 
    port: 9002, 
    singleRun: true 
    }, 
    A: { 
    options: { 
     files: dep.concat([  
     'app/A/src/**/*.js' 
     ]),  
    } 
    }, 
    B: { 
    options: { 
     files: dep.concat([ 
     'app/B/src/**/*.js' 
     ]),  
    } 
    } 
}; 

我怎麼能在同一個繁重的任務同時運行因緣目標(A和B) ? 我的猜測是,我必須重置karma服務器(phantomJs?),或者將它們作爲單獨的「集合」運行在同一個目標上,但我無法找到如何去做。

希望有人在那裏可能會幫助!謝謝!

UPDATE1
issue on github似乎爲解決同樣的問題,但還沒有去到一個釋放。

回答

0

變通方法,工作
從分發任務刪除的karma任務。 而不是試圖在一個咕嚕任務中運行多個業力目標,你可以單獨執行多個咕嚕命令(主要是在持續集成服務器上。對於開發,很少需要運行所有目標)

命令可以是:(可選xxxxxx是任何你想在測試完成後運行的任務)

grunt testA && grunt testB && grunt xxxxxx 
0

也許你可以將port選項移動到目標中,併爲每個目標選擇不同的端口?

A: { 
    options: { 
     port: 9011, 
     files: dep.concat([  
     'app/A/src/**/*.js' 
     ]),  
    } 
    }, 
    B: { 
    options: { 
     port: 9012, 
     files: dep.concat([ 
     'app/B/src/**/*.js' 
     ]),  
    } 
    } 
+0

好的!我們嘗試過,但沒有成功。 –