2016-10-10 133 views
1

我試圖用咕嚕-exec來運行,在通過部署鏈接變量一個JavaScript測試運行。設置環境變量咕嚕咕嚕或-EXEC

我試圖通過設置環境變量grunt.option('link')這樣做使用exec:setLink。在我的test_runner.js我抓住變量process.env.TEST_LINK。不幸的是,grunt-exec似乎不會運行bash命令,例如export(?)

真的,我不在乎變量如何到達我的test_runner.js,所以任何其他想法都會受到歡迎。

exec: { 

    // DOESN'T WORK: Sets env variable with link for selenium tests 
    setLink: { 
    cmd: function() { 
     return "export TEST_LINK=" + "'" + grunt.option('link') + "'"; 
    } 
    }, 
    // Integration tests, needs TEST_LINK 
    selenium: { 
    cmd: function() { 
     return "node test/runner/jasmine_runner.js"; 
    } 
    } 

回答

2

隨着grunt-exec,子進程的環境變量可以在env option指定:

exec: { 
    selenium: { 
    cmd: function() { 
     return "node test/runner/jasmine_runner.js"; 
    }, 
    options: { 
     env: { 
     'TEST_LINK': grunt.option('link') 
     } 
    } 
    } 
} 

有一點要記住的是,如果僅僅TEST_LINKenv選項指定,這將是子進程的唯一環境變量。如果你想傳遞當前進程的環境變量,也可以做這樣的事情:

exec: { 
    selenium: { 
    cmd: function() { 
     return "node test/runner/jasmine_runner.js"; 
    }, 
    options: { 
     env: Object.assign({}, process.env, { 'TEST_LINK': grunt.option('link') }) 
    } 
    } 
} 
+0

你有沒有真正嘗試這個?它實際上並不適合我。 – Tyler

+0

不是最近,也不是你的配置,但我以前使用它。它只是將'env'選項直接傳遞給子進程'exec'調用。無論如何,我看到你已經通過將設置變量放在grunt進程的環境中解決了你的問題。 – cartant

1

最後我只使用節點process.env['TEST_LINK'] = grunt.option('link'); 然後在我的JavaScript檢索與process.env['TEST_LINK'];