我试图在我的package.json文件中删除版本号,然后使用更新版本号创建一个新的git标记.每当我运行bump任务时,创建的git标签都是旧版本号,而不是碰撞版本号.
我正在使用它gulp-load-plugins
来注册我的所有插件并将它们映射到$
,而不是必须手动声明它们.而不是var bump = require("gulp"); ... bump()
我只是使用$.bump()
.
尝试#1
我的初始代码看起来像这样.
var gulp = require("gulp");
var $ = require('gulp-load-plugins')();
gulp.task('bump', function() {
gulp.src(['package.json'])
.pipe($.bump())
.pipe(gulp.dest('./'));
var config = require('./package.json');
$.git.tag('v' + config.version, 'Version message');
$.util.log("tag added: " + config.version);
});
尝试#2
有些谷歌搜索似乎是一个异步vs同步问题,所以在阅读这篇博文之后,我创建了两个任务来测试它.
tag
依赖于bump
完成,大变化是在bump任务中的return语句.日志输出显示它们按顺序执行,但问题仍然存在.
var gulp = require("gulp");
var $ = require('gulp-load-plugins')();
gulp.task('bump', function() {
return gulp.src(['package.json'])
.pipe($.bump())
.pipe(gulp.dest('./'));
});
gulp.task('tag',['bump'], function() {
var config = require('./package.json');
$.git.tag('v' + config.version, 'Version message');
$.util.log("tag added: " + config.version);
});
尝试#3
我也尝试将git标签逻辑移动到碰撞中的.on('close')事件中,但这也无法解决我的问题.
var gulp = require("gulp");
var $ = require('gulp-load-plugins')();
gulp.task('bump', function() {
return gulp.src(['package.json'])
.pipe($.bump())
.pipe(gulp.dest('./'))
.on('close', function () {
var config = require('./package.json');
$.git.tag('v' + config.version, 'Version message');
$.util.log("tag added: " + config.version);
});
});
尝试#4
还尝试了Mangled-Deutz建议不使用,require('package.json')
因为require可能会缓存结果.我尝试使用节点文件系统的readFile()方法,但这也没有成功.
var gulp = require("gulp");
var $ = require('gulp-load-plugins')();
var fs = require('fs');
gulp.task('bump', function() {
gulp.src(['package.json'])
.pipe($.bump())
.pipe(gulp.dest('./'));
fs.readFile("./package.json", {encoding: 'utf-8'}, function (err, data) {
var config = JSON.parse(data);
$.git.tag('v' + config.version, 'Version message');
$.util.log("tag added: " + config.version);
});
});
那么问题出在哪里呢?它仍然是异步vs同步问题,我做错了吗?我更喜欢只在一个任务中使用逻辑,但如果他们只有两个方法来实现这一点,那就这样吧.
我是新来的吞咽和流如何工作,所以如果我的标题没有意义让我知道.我想更新它,以便它与搜索结果更相关.
提前致谢.