【问题标题】:How do I get a grunt project's version from command line?如何从命令行获取 grunt 项目的版本?
【发布时间】:2013-11-27 02:04:51
【问题描述】:

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

【问题讨论】:

    标签: npm gruntjs


    【解决方案1】:

    所以在 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 更快,而且更小。所以,享受吧!

    【讨论】:

    • 您的第二个答案是我目前正在做的事情。我希望找到一个从命令行获取项目版本的繁琐命令,也许我会自己写一个:)
    • 啊,好吧。请参阅我的更新答案,了解您可以用于此目的的任务。 :)
    • 谢谢,本。这非常有效。我没有运气抑制无关的输出被输出,例如'运行“版本”任务'和'完成,没有错误'。所以我可能会使用 CI 服务器中的 sed 或类似的东西:grunt version | sed -n 2p
    猜你喜欢
    • 2011-04-02
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 2016-04-21
    相关资源
    最近更新 更多