config :{ static_dest:'release/main/webapp/static/union/' },
concat:{ lib:{ files:{ '<%= config.static_dest %>js/build.js':[ '<%= config.static_dest %>js/zepto.min.js', '<%= config.static_dest %>js/slip-min.js' ] } } },
混淆壓縮任務,將release/js/文件夾下的全部js文件進行混淆壓縮php
uglify:{ options:{ banner:'/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n' }, my_target:{ files:[ { expand:true, cwd:'<%= config.static_dest %>js/', src:'*.js', dest:'<%= config.static_dest %>js/' } ] } },
css壓縮任務,將release/css/文件夾下的全部css文件進行壓縮css
cssmin:{ options:{ banner:'/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n', beautify:{ ascii_only:true } }, my_target:{ files:[{ expand:true, cwd:'<%= config.static_dest %>css/', src:'*.css', dest:'<%= config.static_dest %>css/' }] } },
消除任務,將release/js/文件夾下不合並以前的js文件清除html
clean:[ "<%= config.static_dest %>js/zepto.min.js", "<%= config.static_dest %>js/slip-min.js" ],
rev: { options: { encoding: 'utf8', algorithm: 'md5', length: 8 }, assets: { files: [{ src: [ '<%= config.static_dest %>img/**/*.{jpg,jpeg,gif,png}', '<%= config.static_dest %>css/*.css', '<%= config.static_dest %>js/**/*.js' ] }] } },
替換動態頁面中的靜態文件引用任務(針對靜態資源引用的地址進行替換,若是有同窗須要使用CDN前綴地址的話,那麼你們可使用我發佈的一個grunt插件grunt-contrib-levin-usemin,這個插件你們能夠用其它插件的安裝方法去安裝,與grunt-usemin插件不一樣的地方是我加了一個替換方法filePrefixer,github地址:https://github.com/levincao1/grunt-contrib-levin-usemin/)前端
usemin:{ css:{ files:{ src:['<%= config.static_dest %>css/*.css'] } }, js:['<%= config.static_dest %>js/**/*.js'], html:['<%= config.views_dest %>**/*.jsp','<%= config.views_dest %>*.jsp'], options:{
//替換靜態文件引地址前綴 filePrefixer:function(url){ if(!url){ return ''; } return url.replace('../..','<%=request.getContextPath()%>'); }, patterns: { js: [ [/(img\.png)/, 'Replacing reference to image.png'] ] } } }
聲明一個發佈的tasknode
grunt.registerTask('release',['concat','uglify','clean','cssmin','rev','usemin']);
運維同窗添加的編譯腳本build.shgit
#!/bin/bash /bin/rm -rf release &&\ mkdir release && \ cp -r src/* release/ &&\
#執行grunt發佈的release任務 grunt release
發佈結果github
經過運維的發佈腳本會生成一個release目錄(也就是咱們上面指到的release目錄)再執行grunt發佈命令操做release目錄下的靜態資源web
比較一下發布前npm
發佈後的靜態資源json
動態頁面中的靜態資源引用發佈前的