Grunt完整打包一个项目实例

Grunt确实好用,配置好Gruntfile.js之后,一个命令就行云如流水,程序帮你搞定一切,爽歪歪。

我们先看压缩前的目录:

Grunt完整打包一个项目实例

再看打包后的目录:

Grunt完整打包一个项目实例

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']);

}

按照这个配置大家就可以自动化打包自己的项目咯。

你可能感兴趣的:(grunt)