grunt经常使用插件的使用

Grunt 做为前端自动化构建工具,我主要使用到的是其中对css的less预处理器的转换,图片的压缩,js,css文件的合并压缩以及实时监测的插件。css

好处是:节省带宽流量,提升了代码的安全性。前端

 

使用Grunt的步骤以下:node

1.安装:先要 安装 Node.js, 而后 安装 Grunt(打开控制台输入npm install -g grunt-cli进行全局安装)。npm

2.建立本身的项目文件(此处用到了bootstrap配合grunt使用):json

注意:bootstrap

  • Gruntfile.js 是用来配置和定义任务并加载Grunt插件;
  • package.json 是 npm 用来配置项目的元数据,如配置文件合并与压缩依赖的插件;
  • 这里的node_modules文件是以后安装了相关插件自动出现的内容。

而后在package.json中输入数组

{
  "name": "guocheng",
  "version": "1.0.0",
  "devDependencies": {
//用来存储开发依赖项
} }

3.插件的安装:安全

再次安装grunt,这里就是进入创建的项目guocheng下面,打开控制台安装,输入npm install grunt  --save-dev回车。less

安装好后node_modules文件便会出现,package.json中的“devDependencies”里面便多了插件信息。函数

接着继续安装你所须要的插件npm install  插件名称  --save-dev(例如:安装uglify插件:

npm install  grunt-contrib-uglify  --save-dev),我在把所需插件安装好后,package.json中的内容变化以下:

4.在Gruntfile.js 里面进行相关插件的配置:

//包装函数
module.exports = function (grunt) {
    //任务配置,全部插件的配置信息
    grunt.initConfig({
        pkg:grunt.file.readJSON('package.json'),
        less: {//把less文件自动转换为css文件
            compile: {
                files: {
                    'css/common.css': 'css/common.less'
                }
            },
            yuicompress: {
                files: {
                    'css/common-min.css': 'css/common.css'
                },
                options: {
                    yuicompress: true
                }
            }
        },
//压缩图片
        imagemin: {
            dynamic: {
                options: {
                    optimizationLevel: 3 // png图片优化水平,3是默认值,取值区间0-7
                },
                files: [
                    {
                        expand: true, // 开启动态扩展
                        cwd: "img/", // 当前工做路径
                        src: ["**/*.{png,jpg,gif}"], // 要出处理的文件格式(img下的全部png,jpg,gif)
                        dest: "img/" // 输出目录(直接覆盖原图)
                    }
                ]
            }
        },

        // 合并任务配置
        concat: {

            css: {
                // 源文件,数组,
                src: ['css/*.css'],
                // 目标文件, pkg.name 是定义在 package.json 文件中的 name
                dest: 'dist/all.css'
            },
            js: {
                options: {
                    // js 文件合并用 ';'分隔
                    separator: ';',
                },
                src: ['js/*.js'],
                dest: 'dist/all.js'
            },
        },
        // 压缩 css 文件
        cssmin: {
            css: {
                src: 'dist/all.css',//将以前的all.css
                dest: 'dist/all.min.css'  //压缩
            }
        },
        // 压缩 js 文件
        uglify: {
            js: {
                src: 'dist/all.js',//将以前的all.js
                dest: 'dist/all.min.js'  //压缩
            },
        },
watch:{
            build:{
                files: ['js/*.js','css/*.less'],//实时监测js,less文件内容的改动并执行相关任务
            tasks:['less','uglify'],
            options:{spawn:false}
}
        }
    });
//告诉grunt当咱们在终端中输入grunt时须要作些什么
    grunt.loadNpmTasks('grunt-contrib-less');
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-css');
    grunt.loadNpmTasks('grunt-contrib-imagemin');
    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.registerTask('default',['less','concat','cssmin','uglify','watch']);
};

而后在控制台输入grunt回车:

 

 而后想要的结果就出现了。

若是要另外新建项目,把package.json拷过去,打开项目所在的控制台输入npm install回车即可把里面的插件一次性安装好。固然,若是只想执行一个插件的命令,就在控制台里面输入grunt +想要执行的项目 ,好比就仅仅压缩图片,就在控制台输入grunt imagemin回车便可。