javascript - 设置环境变量 grunt 或 grunt-exec

标签 javascript node.js gruntjs grunt-exec

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

我尝试通过使用 exec:setLink 设置环境变量 grunt.option('link') 来实现。在我的 test_runner.js 中,我使用 process.env.TEST_LINK 获取变量。不幸的是,grunt-exec 似乎不会运行诸如 export(?) 之类的 bash 命令

真的,我不关心变量是如何到达我的 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') })
    }
  }
}

关于javascript - 设置环境变量 grunt 或 grunt-exec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39963764/

相关文章:

javascript - 列出 .prototype 的属性?

node.js - Nodejs - 来自 OData $batch 的响应正文状态

javascript - 在 Gruntfile 内部或从 Gruntfile 加载和解析 .ini 文件

css - Devtools 不等待 less 重新编译 css

node.js - 如何为 Redis/RethinkDB 指定备用公开端口(使用 Docker Compose)?

css - GruntJS:Autoprefixer 循环遍历所有 CSS 文件

javascript - Mootools 类变量作用域

javascript - 重置旧的点击元素rel

javascript - 为什么 Javascript 正则表达式中的 "or"运算符没有被转义

node.js - 表达restAPI,如何正确验证请求并响应无效请求?