Grunt bump 和提示提交信息
Grunt bump and prompt for commit message
我是 Grunt 的新手,但我正在尝试组合 grunt-bump with grunt-prompt 以便提示用户输入提交消息,然后将其添加到提交中。
我的 Gruntfile.js 中的代码基于 this post,但提示元素不起作用。知道我做错了什么吗?
module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-bump');
grunt.loadNpmTasks('grunt-prompt');
grunt.initConfig({
prompt: {
commit: {
options: {
questions: [{
config: 'gitmessage',
type: 'input',
message: 'Commit Message'
}]
}
}
},
bump: {
options: {
files: ['package.json'],
updateConfigs: [],
commit: true,
commitMessage: '<%=grunt.config("prompt.gitmessage")%>',
commitFiles: ['package.json'],
createTag: true,
tagName: 'v%VERSION%',
tagMessage: 'Version %VERSION%',
push: true,
pushTo: 'origin',
gitDescribeOptions: '--tags --always --abbrev=1 --dirty=-d',
globalReplace: false,
prereleaseName: false,
metadata: '',
regExp: false
}
},
});
};
这是终端输出:
$ grunt bump
Running "bump" task
>> Version bumped to 7.0.39 (in package.json)
>> Committed as " v7.0.39"
>> Tagged as "v7.0.39"
>> Pushed to origin
Done.
解决方案 A:
您需要对您的 Gruntfile.js
进行一些更改,如下例所示 (参见评论 1 和 2):
Gruntfile.js
module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-bump');
grunt.loadNpmTasks('grunt-prompt');
grunt.initConfig({
prompt: {
commit: {
options: {
questions: [{
config: 'gitmessage',
type: 'input',
message: 'Commit Message'
}]
}
}
},
bump: {
options: {
files: ['package.json'],
updateConfigs: [],
commit: true,
commitMessage: '<%=grunt.config("gitmessage")%>',// 1) Change this.
commitFiles: ['package.json'],
createTag: true,
tagName: 'v%VERSION%',
tagMessage: 'Version %VERSION%',
push: true,
pushTo: 'origin',
gitDescribeOptions: '--tags --always --abbrev=1 --dirty=-d',
globalReplace: false,
prereleaseName: false,
metadata: '',
regExp: false
}
}
});
grunt.registerTask('myBump', ['prompt:commit', 'bump']);// 2) Register new task.
}
备注
首先,将 bump
任务中 commitMessage
属性 的值更改为以下内容:
'<%=grunt.config("gitmessage")%>'
您当前在 grunt template 中的 prompt.
部分已被省略。它应该是您在 prompt
任务中指定的 config
属性 的值。
接下来,注册一个新的Task,姑且称之为myBump
。即
grunt.registerTask('myBump', ['prompt:commit', 'bump']);
重要提示: 您可以为任务选择另一个名称而不是 myBump
,但是不能将其命名为 bump
将与现有任务冲突。
这个新注册的任务通过执行以下操作确保 prompt:commit
任务在 bump
之前 运行:
Alias Tasks the commit
Target 您的 prompt
任务(即 prompt:commit
)。
然后为 bump
任务设置别名。
运行 任务
您需要 运行,而不是通过 CLI 运行ning grunt bump
; grunt myBump
.
运行 grunt myBump
通过您的 CLI 将:
首先提示您输入提交信息。例如:
Running "prompt:commit" (prompt) task
? Commit Message
My message about the bump
随后 运行 是您的 bump
任务。例如::
Running "bump" task
>> Version bumped to 1.0.1 (in package.json)
>> Committed as
My message about the bump
>> Tagged as "v1.0.1"
解决方案 B:
虽然 解决方案 A 工作正常,但它不适应所有 semver 版本的碰撞。目前它只会在每次 grunt myBump
为 运行 时更新 PATCH
版本。
也许,您的意图是启用一种方法来处理各种类型的 semver 颠簸。分类如下:
MAJOR version when you make incompatible API changes,
MINOR version when you add functionality in a backwards-compatible manner,
PATCH version when you make backwards-compatible bug fixes.
以下 Gruntfile.js
显示了用于处理上面列出的任一版本类型的配置。
Gruntfile.js
module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-bump');
grunt.loadNpmTasks('grunt-prompt');
grunt.initConfig({
prompt: {
patch: {
options: {
questions: [{
config: 'gitmessage',
type: 'input',
message: 'Commit message for PATCH version bump:'
}]
}
},
minor: {
options: {
questions: [{
config: 'gitmessage',
type: 'input',
message: 'Commit message for MINOR version bump:'
}]
}
},
major: {
options: {
questions: [{
config: 'gitmessage',
type: 'input',
message: 'Commit message for MAJOR version bump:'
}]
}
}
},
bump: {
options: {
files: ['package.json'],
updateConfigs: [],
commit: true,
commitMessage: '<%=grunt.config("gitmessage")%>',
commitFiles: ['package.json'],
createTag: true,
tagName: 'v%VERSION%',
tagMessage: 'Version %VERSION%',
push: true,
pushTo: 'origin',
gitDescribeOptions: '--tags --always --abbrev=1 --dirty=-d',
globalReplace: false,
prereleaseName: false,
metadata: '',
regExp: false
}
}
});
grunt.registerTask('bump-patch', ['prompt:patch', 'bump:patch']);
grunt.registerTask('bump-minor', ['prompt:minor', 'bump:minor']);
grunt.registerTask('bump-major', ['prompt:major', 'bump:major']);
}
运行
使用上面显示的配置,您 运行 通过 CLI 适当地执行以下命令:
修改PATCH
版本运行:
grunt bump-patch
修改MINOR
版本运行:
grunt bump-minor
修改MAJOR
版本运行:
grunt bump-major
我是 Grunt 的新手,但我正在尝试组合 grunt-bump with grunt-prompt 以便提示用户输入提交消息,然后将其添加到提交中。
我的 Gruntfile.js 中的代码基于 this post,但提示元素不起作用。知道我做错了什么吗?
module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-bump');
grunt.loadNpmTasks('grunt-prompt');
grunt.initConfig({
prompt: {
commit: {
options: {
questions: [{
config: 'gitmessage',
type: 'input',
message: 'Commit Message'
}]
}
}
},
bump: {
options: {
files: ['package.json'],
updateConfigs: [],
commit: true,
commitMessage: '<%=grunt.config("prompt.gitmessage")%>',
commitFiles: ['package.json'],
createTag: true,
tagName: 'v%VERSION%',
tagMessage: 'Version %VERSION%',
push: true,
pushTo: 'origin',
gitDescribeOptions: '--tags --always --abbrev=1 --dirty=-d',
globalReplace: false,
prereleaseName: false,
metadata: '',
regExp: false
}
},
});
};
这是终端输出:
$ grunt bump
Running "bump" task
>> Version bumped to 7.0.39 (in package.json)
>> Committed as " v7.0.39"
>> Tagged as "v7.0.39"
>> Pushed to origin
Done.
解决方案 A:
您需要对您的 Gruntfile.js
进行一些更改,如下例所示 (参见评论 1 和 2):
Gruntfile.js
module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-bump');
grunt.loadNpmTasks('grunt-prompt');
grunt.initConfig({
prompt: {
commit: {
options: {
questions: [{
config: 'gitmessage',
type: 'input',
message: 'Commit Message'
}]
}
}
},
bump: {
options: {
files: ['package.json'],
updateConfigs: [],
commit: true,
commitMessage: '<%=grunt.config("gitmessage")%>',// 1) Change this.
commitFiles: ['package.json'],
createTag: true,
tagName: 'v%VERSION%',
tagMessage: 'Version %VERSION%',
push: true,
pushTo: 'origin',
gitDescribeOptions: '--tags --always --abbrev=1 --dirty=-d',
globalReplace: false,
prereleaseName: false,
metadata: '',
regExp: false
}
}
});
grunt.registerTask('myBump', ['prompt:commit', 'bump']);// 2) Register new task.
}
备注
首先,将
bump
任务中commitMessage
属性 的值更改为以下内容:'<%=grunt.config("gitmessage")%>'
您当前在 grunt template 中的
prompt.
部分已被省略。它应该是您在prompt
任务中指定的config
属性 的值。接下来,注册一个新的Task,姑且称之为
myBump
。即grunt.registerTask('myBump', ['prompt:commit', 'bump']);
重要提示: 您可以为任务选择另一个名称而不是
myBump
,但是不能将其命名为bump
将与现有任务冲突。这个新注册的任务通过执行以下操作确保
prompt:commit
任务在bump
之前 运行:Alias Tasks the
commit
Target 您的prompt
任务(即prompt:commit
)。然后为
bump
任务设置别名。
运行 任务
您需要 运行,而不是通过 CLI 运行ning grunt bump
; grunt myBump
.
运行 grunt myBump
通过您的 CLI 将:
首先提示您输入提交信息。例如:
Running "prompt:commit" (prompt) task
? Commit Message
My message about the bump随后 运行 是您的
bump
任务。例如::Running "bump" task
>> Version bumped to 1.0.1 (in package.json)
>> Committed as
My message about the bump>> Tagged as "v1.0.1"
解决方案 B:
虽然 解决方案 A 工作正常,但它不适应所有 semver 版本的碰撞。目前它只会在每次 grunt myBump
为 运行 时更新 PATCH
版本。
也许,您的意图是启用一种方法来处理各种类型的 semver 颠簸。分类如下:
MAJOR version when you make incompatible API changes,
MINOR version when you add functionality in a backwards-compatible manner,
PATCH version when you make backwards-compatible bug fixes.
以下 Gruntfile.js
显示了用于处理上面列出的任一版本类型的配置。
Gruntfile.js
module.exports = function(grunt) {
grunt.loadNpmTasks('grunt-bump');
grunt.loadNpmTasks('grunt-prompt');
grunt.initConfig({
prompt: {
patch: {
options: {
questions: [{
config: 'gitmessage',
type: 'input',
message: 'Commit message for PATCH version bump:'
}]
}
},
minor: {
options: {
questions: [{
config: 'gitmessage',
type: 'input',
message: 'Commit message for MINOR version bump:'
}]
}
},
major: {
options: {
questions: [{
config: 'gitmessage',
type: 'input',
message: 'Commit message for MAJOR version bump:'
}]
}
}
},
bump: {
options: {
files: ['package.json'],
updateConfigs: [],
commit: true,
commitMessage: '<%=grunt.config("gitmessage")%>',
commitFiles: ['package.json'],
createTag: true,
tagName: 'v%VERSION%',
tagMessage: 'Version %VERSION%',
push: true,
pushTo: 'origin',
gitDescribeOptions: '--tags --always --abbrev=1 --dirty=-d',
globalReplace: false,
prereleaseName: false,
metadata: '',
regExp: false
}
}
});
grunt.registerTask('bump-patch', ['prompt:patch', 'bump:patch']);
grunt.registerTask('bump-minor', ['prompt:minor', 'bump:minor']);
grunt.registerTask('bump-major', ['prompt:major', 'bump:major']);
}
运行
使用上面显示的配置,您 运行 通过 CLI 适当地执行以下命令:
修改
PATCH
版本运行:grunt bump-patch
修改
MINOR
版本运行:grunt bump-minor
修改
MAJOR
版本运行:grunt bump-major