dynamic添加版本号到目标输出文件w / grunt

我有我们的版本号package.json文件,如:

 { name: "myproject" version: "2.0" } 

我的目标是dynamic地将package.json文件中的版本号添加到输出文件中。 例如,在javascript中,我不想手动更新版本号,但是想要在每个grunt构build之后生成类似于这个的东西:

 /* My Project, v2.0 */ window.myProject = { version: "2.0" }; 

在我的Gruntfile.jsconfiguration中有一个简单的方法吗?

我执行: https : //github.com/erickrdch/grunt-string-replace

在我的源代码css / js文件中,我使用文本{{ VERSION }}replace为package.json文件中设置的版本号。 下面是我添加到Gruntfile.js的configuration。

 'string-replace': { version: { files: { // the files I did string replacement on }, options: { replacements: [{ pattern: /{{ VERSION }}/g, replacement: '<%= pkg.version %>' }] } } }, pkg: grunt.file.readJSON('package.json'), 

我认为你只想做一些窍门,让页面无法使用浏览器可能使用的caching文件,而现在,跨浏览器的唯一方法就是把这些东西放在hrefurl上像“app.v2_2.js”或“app.js?ver = 22”。 所以我使用这个咕噜npm包:

https://www.npmjs.org/package/grunt-cache-breaker

默认情况下,它只向JavaScript中添加一个参数,几乎在这种情况下是不需要使用caching的东西,但即使您在其他grunt进程中更改了文件的名称也可以进行configuration。 这只会将HTML标题更改为您所需的内容。

在你安装grunt-cache-breaker之后,把它添加到你的GruntFile中:

 // Append a timestamp to 'app.js', 'controllers.min.js' which are both located in 'index.html' // resulting in the index the call of : href="~/app.js?rel=1415124174159"... cachebreaker: { dev: { options: { match: ['app.js', 'styles.css'] }, files: { src: ['dist/index.html'] } } }, 

然后在你加载模块的地方:

 grunt.loadNpmTasks('grunt-cache-breaker'); 

添加您想要的任务:

 grunt.registerTask('deploy', [ 'clean:app', 'copy:views', 'copy:imgs', 'copy:css', 'uglify:app', 'cssmin:app', 'cachebreaker:dev' ]); 

最后在控制台/命令提示符下运行grunt动作

 > grunt deploy 

我会build议在grunt-contrib-concat中使用横幅function

这也可以用https://github.com/gruntjs/grunt-contrib-uglify的横幅选项来完&#x6210; – 这也需要关心JavaScript文件的小型化。

filerev现在提供这个选项。 使用进程操作文件名,否则后缀为文件内容的md5散列。 你可以使用它来插入你的版本到你想要的每个文件。

参考: https : //github.com/yeoman/grunt-filerev

在你的项目的根目录下创build类似package.json东西

它应该阅读,或者你可以做类似的事情

 pkg: grunt.file.readJSON('package.json'), 

在那里你将有一个version声明,显然对应于<%= pkg.version %>所以在你的json输出中有这个string,然后运行grunt.config.process做variablesreplace

为评论标题做类似的事情