如何从命令行获取grunt项目的版本?

时间:2013-11-25 18:22:49

标签: npm gruntjs

我希望将我的grunt项目与TeamCity持续集成服务器集成。我需要一种方法来使TeamCity生成的包名包含项目的版本号,该版本号位于项目根目录的package.json中。我似乎无法找到提供此功能的grunt命令,并且正在使用grep。是否存在从命令行获取grunt项目版本的无证方法?

1 个答案:

答案 0 :(得分:2)

所以在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在做任何事情时都很啰嗦。如果你想要的东西只记录版本而没有其他任何东西,那么在version.js旁边的根目录中创建一个名为package.json的新文件或其他任何文件。在该文件中粘贴:

module.exports = function() {
    console.log(require('./package.json').version);
}();

并使用node version.js调用它。我最喜欢这种方法,因为它比Grunt快,而且它也更小。所以,享受!