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的横幅选项来完成 – 这也需要关心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
为评论标题做类似的事情