设置环境变量 grunt 或 grunt-exec

Set environment variables grunt or grunt-exec

我正在尝试使用 g运行t-exec 来 运行 一个 javascript 测试 运行ner 并传入一个已部署的 link 变量.

我试图通过使用 exec:setLink 设置环境变量 grunt.option('link') 来做到这一点。在我的 test_runner.js 中,我用 process.env.TEST_LINK 获取变量。不幸的是,g运行t-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";
    }
  }

使用grunt-exec,可以在env option:

中指定子进程的环境变量
exec: {
  selenium: {
    cmd: function () {
      return "node test/runner/jasmine_runner.js";
    },
    options: {
      env: {
        'TEST_LINK': grunt.option('link')
      }
    }
  }
}

要记住的一件事是,如果在 env 选项中只指定了 TEST_LINK,那将是子进程的唯一环境变量。如果你想让当前进程的环境变量也被传递,你可以这样做:

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

我最终只使用了节点 process.env['TEST_LINK'] = grunt.option('link'); 然后用 process.env['TEST_LINK'];

在我的 javascript 中检索