Grunt bump package.json版本

时间:2014-10-11 23:13:06

标签: gruntjs

我想添加'发布'任务:

grunt.initConfig({
  ...
  shell: {
    release: {
      command: function(version) {
        return 'git checkout -b release-' + version + ' devel';
      }
    }
  }
  ...
  grunt.loadNpmTasks('grunt-bumpup');
  grunt.loadNpmTasks('grunt-shell');
  ...
  grunt.registerTask('release', function() {
    grunt.task.run('bumpup');
    var version = grunt.config.get('pkg').version;
    grunt.task.run('shell:release:' + version);
  });

但我有以下内容:

Running "release" task

Running "bumpup" task
Bumped to: 1.2.5

Running "shell:release:1.2.4" (shell) task
Switched to a new branch 'release-1.2.4'
M   Gruntfile.js
M   package.json
M   src/manifest.json

Done, without errors.

因此版本增加了,但是为以前的版本创建了分支。

我认为这是因为package.json缓存了。我可以重读吗?

 var version = grunt.file.readJSON('package.json').version; // old version too

修改

将“updateProps”添加到bumpup配置将更改pkg版本属性,但是:

grunt.registerTask('release', function() {
  grunt.task.run('bumpup');

  var version = grunt.config.get('pkg').version;
  grunt.log.writeln(version); // old version, because tasks run async?

  grunt.task.run('shell:release:' + version);
});

效果很好:

grunt.initConfig({
  pkg: grunt.file.readJSON('package.json'),
  ...
  bumpup: {
    options: {
      updateProps: {
        pkg: 'package.json'
      }
    },
    files: ['package.json', 'src/manifest.json']
  },
  shell: {
    release: {
      command: function() {
        return 'git checkout -b release-' + grunt.config.get('pkg').version + ' devel';
      }
    }
  },
  ...
  grunt.loadNpmTasks('grunt-bumpup');
  grunt.loadNpmTasks('grunt-shell');
  ...
  grunt.registerTask('release', ['lint', 'bumpup', 'shell:release']);

1 个答案:

答案 0 :(得分:2)

您确定已设置 grunt-bumpup 插件的updateProps选项吗?这将允许您在bumpup任务完成后指定要使用新建的版本更新的文件

grunt.initConfig({
  ...
  bumpup: {
    options: {
      updateProps: {
        pkg: 'package.json'
      }
    },
    file: 'package.json'
  }
  ...
});