正确使用grunt-bump和grunt-ng-constant的方法

时间:2016-01-09 11:05:28

标签: javascript gruntjs

虽然看似任务按正确的顺序执行(先碰撞而不是ngconstant创建基于package.json-s版本属性的配置文件)我认为它们实际上并行执行,而ngconstant在写入bump之前读取package.json它

Running "bump" task
md
>> Version bumped to 2.0.6 (in package.json)

Running "ngconstant:production" (ngconstant) task
Creating module config at app/scripts/config.js...OK

resultung package.json的版本为2.0.6,而config.js的版本为2.0.5。

我的ngconstant配置只使用

grunt.file.readJSON('package.json')

阅读json。

所以,基本上问题是,在用ngconstant读取json之前,如何确保完成凹凸写入,以及实际导致上述内容的原因是什么?

编辑:原始Gruntfile:https://github.com/dekztah/sc2/blob/18acaff22ab027000026311ac8215a51846786b8/Gruntfile.js

编辑:解决问题的更新Grunt文件:https://github.com/dekztah/sc2/blob/e7985db6b95846c025ba0b615bf239c4f9c11e8f/Gruntfile.js

2 个答案:

答案 0 :(得分:1)

可能您的package.json文件存储在内存中,在运行下一个任务之前未更新。

workaround将在您的文件package.json中创建一个脚本:

  "scripts": {
    "bumb-and-ngconstant": "grunt:bump && grunt:build"
  }

答案 1 :(得分:1)

根据grunt-ng-constant文档:

  

或者,如果要在运行时计算常量值,可以创建一个惰性求值方法,如果在构建过程中生成json文件,则应该使用该方法。

grunt.initConfig({
  ngconstant: {
    options: {
      dest: 'dist/module.js',
      name: 'someModule'
    },
    dist: {
      constants: function () {
        return {
          lazyConfig: grunt.file.readJSON('build/lazy-config.json')
        };
      }
    }
  },
})

这会强制在任务运行时读取json,而不是在grunt进入ngconstant任务时读取。