前端優化是盡量減少http請求,所以我們需要盡量合並壓縮文件,然后調用壓縮后的文件,比如多個css文件壓縮成一個,多個js文件合並壓縮等,usemin能夠自動在html中使用壓縮后的文件,達到上面的目的。
上圖是完整打包后的文件目錄,原始目錄是assets,打包發布的文件是dist.
gruntfile.js文件內容:
module.exports = function(grunt) { grunt.config.init({ clean:{ src:"dist/" }, useminPrepare: { html: 'index.html', options: { dest: 'dist' } }, usemin: { html: ['dist/index.html'] }, uglify: { 'dist/js/app.min.js': ['assets/js/*.js'] }, copy: { html: { src: './index.html', dest: 'dist/index.html' } }, cssmin:{ 'dist/css/app.min.css': ['assets/css/*.css'] } }); grunt.loadNpmTasks('grunt-contrib-clean'); grunt.loadNpmTasks('grunt-contrib-copy'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-cssmin'); grunt.loadNpmTasks('grunt-usemin'); grunt.registerTask('default',[ 'clean', 'copy:html', 'useminPrepare', 'uglify', 'cssmin', 'usemin' ]); }
原始的index.html
<!DOCTYPE html> <html> <head> <title>Usemin test</title> <!-- build:css dist/css/app.min.css --> <link rel="stylesheet" type="text/css" href="./assets/css/style.css" media="screen" /> <!-- endbuild --> </head> <body> </body> <!-- build:js dist/js/app.min.js --> <script src="./assets/js/foo.js"></script> <script src="./assets/js/bar.js"></script> <!-- endbuild --> </html>
打包后的index.html
<!DOCTYPE html> <html> <head> <title>Usemin test</title> <link rel="stylesheet" href="dist/css/app.min.css" media="screen"/> </head> <body> </body> <script src="dist/js/app.min.js"></script> </html>