grunt构建

 构建工具

        构建工具是对 JS、CSS、HTML、LESS、IMG 等资源文件进行合并压缩构建到最后实现自动化构建项目。
    最流行的三种自动化构建工具: Grunt, Gulp, webpack。
    简化项目构建,自动完成构建。

   

    grunt自动化构建工具,一个基于nodeJs的命令行工具;
    任务运行器, 有丰富的插件;
            常用功能:
                合并文件(js/css)
                压缩文件(js/css)
                语法检查(js)
                less/sass预编译处理

 链接地址:

        中文:http://www.gruntjs.net/(中文官网)
        教程:http://www.cnblogs.com/wangfupeng1988/p/4561993.html(教程)

项目结构:

        |- build
        |- src
            |- js
            |- css
        |- index.html
        |- Gruntfile.js
        |- package.json

 grunt配置文件流程:Gruntfile.js

1、初始化插件配置(初始化)
2、加载插件任务(加载)
3、注册构建任务(注册)

module.exports = function(grunt){

    grunt.initConfig({
            
    });

    grunt.loadNpmTasks('grunt-contrib-concat');

    grunt.registerTask('default', []);

};

 * 常用的插件:

        * grunt-contrib-clean——清除文件(打包处理生成的)
        * grunt-contrib-concat——合并多个文件的代码到一个文件中
        * grunt-contrib-uglify——压缩js文件
        * grunt-contrib-jshint——javascript语法错误检查;
        * grunt-contrib-cssmin——压缩/合并css文件
        * grunt-contrib-htmlmin——压缩html文件
        * grunt-contrib-imagemin——压缩图片文件(无损)
        * grunt-contrib-copy——复制文件、文件夹
        * grunt-contrib-watch——实时监控文件变化、调用相应的任务重新执行

 完整配置(Gruntfile.js):

module.exports = function(grunt) {

    grunt.initConfig({

        concat: {

            options: {

                separator: ';',

            },

            dist: {

                src: ['src/js/*.js'],

                dest: 'dist/js/built.js',

            },

        },

        pkg: grunt.file.readJSON('package.json'),

        uglify: {

            options: {

                banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +

                    '<%= grunt.template.today("yyyy-mm-dd") %> */'

            },

            target: {

                files: {

                    'dist/js/built.min.js': ['dist/js/built.js']

                }

            }

        },

        babel: {

            options: {

                sourceMap: true,

                presets: ['@babel/preset-env'] // '@babel/preset-env'

            },

            dist: {

                files: {

                    'dist/js/built.js': 'src/js/*.js'

                }

            }

        },

        jshint: {

            options: {

                jshintrc: '.jshintrc'

            },

            build: ['Gruntfile.js', 'src/js/*.js']

        },

        cssmin: {

            options: {

                shorthandCompacting: false,

                roundingPrecision: -1

            },

            build: {

                files: {

                    'dist/css/built.min.css': ['src/css/*.css']

                }

            }

        },

        watch: {

            scripts: {

                files: ['src/js/*.js', 'src/css/*.css'],

                tasks: ['concat', 'jshint', 'uglify', 'cssmin'],

                options: { spawn: false }

            }

        }

    });



    // js合并

    grunt.loadNpmTasks('grunt-contrib-concat');

    // js压缩

    grunt.loadNpmTasks('grunt-contrib-uglify');

    // babel es转换

    grunt.loadNpmTasks('grunt-babel');

    // 语法检查

    grunt.loadNpmTasks('grunt-contrib-jshint');

    // css合并压缩

    grunt.loadNpmTasks('grunt-contrib-cssmin');

    // 监听

    grunt.loadNpmTasks('grunt-contrib-watch');



    // 注册构建任务

    grunt.registerTask('default', ['concat', 'uglify', 'babel', 'jshint', 'cssmin']);

    grunt.registerTask('myWatch', ['default', 'watch']);



};

.jshintrc jshint配置文件:

{
    "curly": true,
    "eqeqeq": true,
    "eqnull": true,
    "expr": true,
    "immed": true,
    "newcap": true,
    "noempty": true,
    "noarg": true,
    "regexp": true,
    "browser": true,
    "devel": true,
    "node": true,
    "boss": false,
    "esversion": 6,
    "undef": true,
    "asi": false,
    "predef": ["define", "BMap", "angular", "BMAP_STATUS_SUCCESS"]
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值