在我看来,我正在尝试做一项简单的任务,但却搞不明白。在谷歌和这里都找不到。也许我做的完全错了。
我需要用gulp 4修改json文件中的属性。为了获得属性的新值,我有另一个任务或管道(我不关心:-),并且想要传递它。
另外,如何从命令行传递变量?因此在示例中:gulp release -branchname "foobar"
我该怎么做呢。我知道这里有类似的问题,但对我来说什么都不起作用。
var gulp = require('gulp');
var git = require('gulp-git');
var jeditor = require("gulp-json-editor");
var paths = {
manifest: "vss-extension.json"
}
function getBranchName(){
console.log("Get the current branch name");
return git.revParse({args:'--abbrev-ref HEAD'}, function (err, branch) {
console.log('current git branch: ' + branch);
var currentBranch = branch;
return currentBranch;
});
// console.log("Current branch is: "+ branchName);
// return branchName;
}
function updateExtensionManifestVersion(foo){
var x = 10;
gulp.src(paths.manifest)
.pipe(jeditor(function(json) {
console.log("Append current branchname " + currentBranch + " to extension manifest id");
var currentId = json.id;
console.log("Current manifest id: "+ currentId);
// var branchName = git.revParse({args:'--abbrev-ref HEAD'}, function (err, branch) {
// console.log('current git branch: ' + branch);
// return branch;
// });
// console.log(branchName.branch);
var newId = currentId + "-" + branchName;
console.log("New manifest id: " + newId);
json.id = newId;
return json;
}))
.pipe(gulp.dest(paths.manifest));
}
gulp.task('release', gulp.series(getBranchName, updateExtensionManifestVersion, function(done) {
console.log("release is done");
done();
}));发布于 2020-06-17 21:53:06
要从命令行传递变量,您可以使用yargs,如答案Pass Parameter to Gulp Task中所述。
如果您希望在任务之间传递数据,请设置一个可供两个任务访问的全局变量。
https://stackoverflow.com/questions/51875764
复制相似问题