2016-10-10 109 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'];