soonfy / issue-blog

blog using issue
0 stars 0 forks source link

gruntfile 配置 #38

Open soonfy opened 6 years ago

soonfy commented 6 years ago

配置文件

/**
  *
  * gruntfile配置模板
  * written by soonfy
  *
  * grunt-contrib-uglify压缩js文件
  * grunt-contrib-cssmin压缩css文件
  * grunt-nodemon重启程序
  * grunt-contrib-watch重启任务
  * grunt-concurrent并发控制
  *
*/

module.exports = function (grunt) {

  // 初始化插件
  grunt.initConfig({
    //读取package.json
    pkg: grunt.file.readJSON('package.json'),

    //初始化压缩js文件插件
    uglify: {
      options: {
        banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'              //添加头标
      },
      //声明任务
      build: {
        options: {
          mangle: false,                                      //不混淆变量名
          // preserveComments: 'all',                 //不删除注释
          report: 'min',                                        //输出压缩率
          footer: '\n/*! <%= pkg.name %> 最后修改于: <%= grunt.template.today("yyyy-mm-dd") %> */'         //尾标
        },
        files: [{
          expand: true,                                         //expand设置为true,启动下列参数
          cwd: 'controllers',                                 //所有src指定的匹配都是相对此路径
          src: ['*.js', '../public/javascripts/*.js'],                                         //源文件匹配格式
          dest: 'zip_files/js',                      //目标文件存放路径
          ext: '.min.js'
        }]
      }
    },
    //初始化压缩css文件插件
    cssmin: {
      options: {
        banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'              //添加头标
      },
      build: {
        files: [{
          expand: true,
          cwd: 'public/stylesheets',
          src: '*.css',
          dest: 'zip_files/cs',
          ext: '.min.css'
        }]
      }
    },
    //初始化重启程序插件
    nodemon: {
      dev: {
        script: 'bin/www',                                //重启程序文件
        options: {
          args: [],                                               //传递到script的参数
          nodeArgs: ['--debug'],                          //打开debug服务器
          ignore: ['README.md', 'node_modules/**','zip_files/**'],           //忽略文件
          ext: 'js',                                              //监测文件类型
          watch: ['./'],
          delay: 1000,                                        //延迟重启
          env: {                                                  //重启的环境设置
            PORT: '3000'
          },
          cwd: __dirname                                  //当前活动路径
        }
      }
    },
    //初始化重启任务插件
    watch: {
      //监测js文件
      script: {
        options: {
          livereload: true
        },
        files: 'controllers/*.js',
        tasks: ['uglify']
      },
      //监测css文件
      css: {
        options: {
          livereload: true
        },
        files: 'public/stylesheets/*.css',
        tasks: ['cssmin']
      },
      //检测html文件
      html: {
        options: {
          livereload: true
        },
        files: 'views/*.jade',
        tasks: []
      }
    },
    //初始化并发任务插件
    concurrent: {
      //声明任务
      target: {
        tasks: ['nodemon', 'watch'],                    //并发任务
        options: {
          logConcurrentOutput: true                   //并发输出日志
        }
      }
    }
  });

  //加载插件
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-contrib-cssmin');
  grunt.loadNpmTasks('grunt-nodemon');
  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-concurrent');

  //注册任务
  grunt.registerTask('default', ['uglify:build', 'cssmin:build', 'concurrent:target']);
};

soonfy