我希望将我的grunt项目与TeamCity持续集成服务器集成.我需要一种方法来使TeamCity生成的包名包含项目的版本号,该版本号位于项目根目录的package.json中.我似乎无法找到提供此功能的grunt命令,并且正在使用grep.是否存在从命令行获取grunt项目版本的无证方法? 最佳答案 所以在Grunt你可以这样做:
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
asciify: {
project: {
text: '<%= pkg.name %>',
options: {
font: 'speed',
log: true
}
}
}
});
};
它会将package.json中的名称传递给任何任务,在本例中为grunt-asciify.
对于在命令行上获取项目版本,还有一些事情可以解决,只需在项目的根目录中运行npm version,它将返回如下内容:
grunt-available-tasks (master) $npm version
{ http_parser: '1.0',
node: '0.10.21',
v8: '3.14.5.9',
ares: '1.9.0-DEV',
uv: '0.10.18',
zlib: '1.2.3',
modules: '11',
openssl: '1.0.1e',
npm: '1.3.11',
'grunt-available-tasks': '0.3.7' }
最后一个是项目名称和版本.
编辑:关于你的评论,试试这个:
module.exports = function(grunt) {
grunt.registerTask('version', 'Log the current version to the console.', function() {
console.log(grunt.file.readJSON('package.json').version);
});
}
编辑2:所以我对Grunt一个人不满意,因为Grunt在做任何事情时都很啰嗦.如果你想要的东西只是记录版本而不是其他任何东西,那么在package.json旁边的根目录中创建一个名为version.js的新文件.在该文件粘贴此:
module.exports = function() {
console.log(require('./package.json').version);
}();
并使用node version.js调用它.我最喜欢这种方法,因为它比Grunt快,而且它也更小.所以,享受!