虽然看似任务按正确的顺序执行(先碰撞而不是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
答案 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任务时读取。