gpt4 book ai didi

javascript - 将值从 config.js 传递到 grunt 任务或在 grunt 任务之间传递

转载 作者:太空宇宙 更新时间:2023-11-03 22:31:46 25 4
gpt4 key购买 nike

如何在 grunt 任务之间传递信息?我想将一个值从一个 grunt 任务传递到另一个 grunt 任务。

我的情况是,完成 Protractor 测试后,我想将一个值传递给新的 grunt 任务。为了实现这一目标,我继续在 process.env 中设置值,并尝试在新的 grunt 任务中使用 process.env。但这似乎不起作用

这是conf.js:

afterLaunch: function(exitCode) {
return new Promise(function(fulfill, reject) {
if (typeof jasmine.getEnv().testReportFilePath !== 'undefined' && jasmine.getEnv().testReportFilePath !== null) {
process.env.testReportFilePath = jasmine.getEnv().testReportFilePath;
console.log('Trying: ' + process.env.testReportFilePath);
fulfill('Success: Environment variable testReportFilePath is set in conf.js');
} else {
reject(new Error('Failed: Environment variable testReportFilePath not set in conf.js'));
}
});

这是我的 Gruntfile:

grunt.loadNpmTasks('grunt-protractor-runner');
grunt.loadNpmTasks('grunt-protractor-webdriver');
grunt.loadNpmTasks('grunt-execute');

grunt.config('protractor', {
require: [ setTesting ],
options: {
configFile: 'conf.js', // common config file
keepAlive: true, // If false, the grunt process stops when the test fails.
noColor: false // If true, protractor will not use colors in its output.
},
run_specific_suite: {
options: {
args: {
baseUrl: '<%= grunt.option("testUrl") %>',
browser: '<%= grunt.option("testBrowser") %>',
params: {
environment: '<%= grunt.option("testEnv") %>'
},
suite: '<%= grunt.option("testSuite") %>'
}
}
},
});

grunt.config('execute', {
email_stakeholders: {
options: {
args: [
process.env.testReportFilePath,
'myemail@email.com'
]
},
src: ['toDelete.js']
}
});

但是 process.env.testReportFilePath 在 gruntjs 文件中似乎是未定义

最佳答案

这个答案姗姗来迟。我确实按照 @mparnisari 建议将变量写入文件。因此,我在 conf.js 中执行了以下操作,将值写入 yaml 文件:

fs.writeFileSync(path.join(process.cwd(),'_testReportFilePath.yml'),
'testReportFilePath: ' + jasmine.getEnv().testReportFilePath);

gruntfile 中,使用 grunt api 读取 yaml 文件:

// --- grunt execute task  --- //
grunt.config('execute', {
email_stakeholders: {
options: {
args:[
grunt.file.readYAML(path.join(process.cwd(),'_testReportFilePath.yml')).testReportFilePath, // html report
'myemail@email.com'//enter the recipient emails here
]
},
src: ['test/scripts/nightlyPostTasks.js']
}
});

并且似乎可以满足我的需要。唯一的奇怪之处是,名为 _testReportFilePath.yml 的虚拟 yaml 文件必须始终存在于 CWD 中,以防止出现任何 grunt 错误。

关于javascript - 将值从 config.js 传递到 grunt 任务或在 grunt 任务之间传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35953853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com