Javascript 设置环境变量grunt或grunt exec

Javascript 设置环境变量grunt或grunt exec,javascript,node.js,gruntjs,grunt-exec,Javascript,Node.js,Gruntjs,Grunt Exec,我试图使用grunt exec运行一个javascript测试运行程序,并传入一个已部署的链接变量 我试图通过使用exec:setLink设置环境变量grunt.option('link')来实现这一点。在我的test\u runner.js中,我使用process.env.test\u链接获取变量。不幸的是,grunt exec似乎不会运行诸如export(?)之类的bash命令 真的,我不在乎变量如何进入我的test\u runner.js,所以任何其他想法都是受欢迎的 exec: {

我试图使用grunt exec运行一个javascript测试运行程序,并传入一个已部署的链接变量

我试图通过使用
exec:setLink
设置环境变量
grunt.option('link')
来实现这一点。在我的
test\u runner.js
中,我使用
process.env.test\u链接
获取变量。不幸的是,grunt exec似乎不会运行诸如export(?)之类的bash命令

真的,我不在乎变量如何进入我的
test\u 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";
    }
  }

使用
grunt exec
,子进程的环境变量可以在中指定:

需要记住的一件事是,如果在
env
选项中只指定了
TEST\u LINK
,则这将是子进程的唯一环境变量。如果还希望传递当前进程的环境变量,可以执行以下操作:

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

最后我只使用了node
process.env['TEST_LINK']=grunt.option('LINK')

然后用
process.env['TEST_LINK']在我的javascript中检索

你真的试过这个吗?它实际上对我不起作用。不是最近,也不是你的配置,但我以前用过它。它只是将
env
选项直接传递给子进程
exec
调用。无论如何,我看到您已经通过将设置变量放入grunt进程的环境中解决了您的问题。
exec: {
  selenium: {
    cmd: function () {
      return "node test/runner/jasmine_runner.js";
    },
    options: {
      env: Object.assign({}, process.env, { 'TEST_LINK': grunt.option('link') })
    }
  }
}