关于issue I am having with gulp-tag-version,自述文件建议:
function inc(importance) {
// get all the files to bump version in
return gulp.src(['./package.json', './bower.json'])
// bump the version number in those files
.pipe(bump({type: importance}))
// save it back to filesystem
.pipe(gulp.dest('./'))
/* Recompile the Javascript here */
// commit the changed version number
.pipe(git.commit('bumps package version'))
// read only one file to get the version number
.pipe(filter('package.json'))
// **tag it in the repository**
.pipe(tag_version())
}
gulp.task('patch', function() { return inc('patch'); })
gulp.task('feature', function() { return inc('minor'); })
gulp.task('release', function() { return inc('major'); })
我想在被碰撞的版本和git标记它之间重新编译一些Javascript。我有一个任务,js
,但不清楚如何调用js
任务(或以其他方式重新排序碰撞/标记任务)来实现这个共同和理想的结果(即在已编译代码的标题中包含该版本。)
值得注意的是,如果一个人有三个任务bump
,compile
和tag
,则bump
的{{1}}似乎会被缓存,不能通过单独的package.json
任务重新阅读。
答案 0 :(得分:7)
实现这一目标的一个简单方法是获得3个相互依赖的新独立任务:
tag
取决于commit
,因为标记将应用于我们之前必须执行的最后一次提交commit
取决于js
,因为我们应该使用碰撞版本重新构建文件js
取决于bump
,在执行任何操作之前删除清单文件的版本bump
没有依赖关系。问题在于,您必须更改js
以添加bump
依赖项,并且我确定您不希望每次重新编译时都遇到问题或者你的一个watch
被触发。
所以你可以使用像 run-sequence 这样的东西来绕过它。
我喜欢减少gulp任务数量的一件事是使用参数,但如果你愿意,你可以坚持使用inc
函数,这是一个细节(这里是--major
, --minor
或--patch
)。
所以你可以做这样的事情(在执行顺序中从上到下):
gulp.task('uprev', function () {
return gulp.src(['./package.json', './bower.json'])
.pipe(bump({ type: process.argv[3] ? process.argv[3].substr(2) : 'patch' }))
.pipe(gulp.dest('./'));
});
gulp.task('rebuild', function (cb) {
runSequence('uprev', 'js', cb); //uprev will here be executed before js
});
gulp.task('commit', ['rebuild'], function () {
return gulp.src(['./package.json', './bower.json', 'dist/**/*'])
.pipe(git.add())
.pipe(git.commit('bump version'));
});
gulp.task('bump', ['commit'], function () {
return gulp.src('package.json')
.pipe(tagVersion());
});
对于您的提交,您可能希望同时添加清单和已编译的文件,我已添加随机dist
文件夹的所有内容以进行演示。
我故意削减bump
和commit
任务,因此您不必使用 gulp-filter ,这在我看来相当无用对于这种小事,但它当然是你想要的。
最后一件事(承诺),您可以通过使用简单的节点fs调用结合 gulp-git <来避免使用 gulp-tag-version / em>你已经拥有:
gulp.task('bump', ['commit'], function (cb) {
fs.readFile('./package.json', function (err, data) {
if (err) { return cb(err); }
var version = JSON.parse(data.toString()).version;
git.tag(version, 'Version message', function (err) {
cb(err);
});
});