Grunt完整打包一個項目實例


Grunt確實好用,配置好Gruntfile.js之后,一個命令就行雲如流水,程序幫你搞定一切,爽歪歪。

我們先看壓縮前的目錄:

再看打包后的目錄:

build是打包后的文件夾,main.css是壓縮后的,build/js下的文件也是壓縮后的,build下的html也是壓縮后的,減少了很多人工打包的工作。

OK,來看下我們的核心Gruntfile.js文件,打包的流程配置都是在這個里面完成。

module.exports = function(grunt) {
  // 項目配置
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    clean: { //清除目標文件下文件
      payment: {
        src: "payment/build"
      }
    },
    copy: {
      payment: {
        expand: true,
        cwd: 'payment/src',//源文件路徑
        src: '**',//源文件目錄下的所有文件
        dest: 'payment/build/',//目標文件路徑,把源文件下的文件復制到該目錄下
        flatten: false,//用來指定是否保持文件目錄結構
        filter: 'isFile',
      },
    },
    uglify: {//壓縮js文件
      payment: {
        files: [{
          expand: true,
          cwd: 'payment/src/js', //js源文件目錄
          src: '*.js', //所有js文件
          dest: 'payment/build/js' //輸出到此目錄下
        }]
      }
    },
    // sass: {
    //   payment: {
    //     files: [{
    //       expand: true,
    //       cwd: 'src',
    //       src: ['*.scss'],
    //       dest: 'payment/build',
    //       ext: '.css'
    //     }]
    //   }
    // },
    cssmin: { //壓縮css
      payment: {
        "files": {
          'payment/build/css/main.css': ['payment/src/css/*.css']//將數組里面的css文件壓縮成一個目標文件
        }
      }
    },
    htmlmin: { //壓縮html
      payment: {
        options: { // Target options
          removeComments: true,
          collapseWhitespace: true
        },
        files: [{
          expand: true, // Enable dynamic expansion.
          cwd: 'payment/src', // Src matches are relative to this path.
          src: ['*.html'], // Actual pattern(s) to match.
          dest: 'payment/build/', // Destination path prefix.
          ext: '.html', // Dest filepaths will have this extension.
          extDot: 'first' // Extensions in filenames begin after the first dot
        }]
      }
    }
  });
  // 加載提供"uglify"任務的插件
  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-contrib-htmlmin');
  // grunt.loadNpmTasks('grunt-contrib-sass');
  grunt.loadNpmTasks('grunt-contrib-watch');
  // 默認任務
  grunt.registerTask('payment', ['clean:payment','copy:payment', 'uglify:payment', 'cssmin:payment', 'htmlmin:payment']);
}

按照這個配置大家就可以自動化打包自己的項目咯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM