• 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、注册构建任务(注册)

    1. module.exports = function(grunt){
    2. grunt.initConfig({
    3. });
    4. grunt.loadNpmTasks('grunt-contrib-concat');
    5. grunt.registerTask('default', []);
    6. };

     * 常用的插件:

            * 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):

    1. module.exports = function(grunt) {
    2.     grunt.initConfig({
    3.         concat: {
    4.             options: {
    5.                 separator: ';',
    6.             },
    7.             dist: {
    8.                 src: ['src/js/*.js'],
    9.                 dest: 'dist/js/built.js',
    10.             },
    11.         },
    12.         pkg: grunt.file.readJSON('package.json'),
    13.         uglify: {
    14.             options: {
    15.                 banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
    16.                     '<%= grunt.template.today("yyyy-mm-dd") %> */'
    17.             },
    18.             target: {
    19.                 files: {
    20.                     'dist/js/built.min.js': ['dist/js/built.js']
    21.                 }
    22.             }
    23.         },
    24.         babel: {
    25.             options: {
    26.                 sourceMap: true,
    27.                 presets: ['@babel/preset-env'] // '@babel/preset-env'
    28.             },
    29.             dist: {
    30.                 files: {
    31.                     'dist/js/built.js': 'src/js/*.js'
    32.                 }
    33.             }
    34.         },
    35.         jshint: {
    36.             options: {
    37.                 jshintrc: '.jshintrc'
    38.             },
    39.             build: ['Gruntfile.js', 'src/js/*.js']
    40.         },
    41.         cssmin: {
    42.             options: {
    43.                 shorthandCompacting: false,
    44.                 roundingPrecision: -1
    45.             },
    46.             build: {
    47.                 files: {
    48.                     'dist/css/built.min.css': ['src/css/*.css']
    49.                 }
    50.             }
    51.         },
    52.         watch: {
    53.             scripts: {
    54.                 files: ['src/js/*.js', 'src/css/*.css'],
    55.                 tasks: ['concat', 'jshint', 'uglify', 'cssmin'],
    56.                 options: { spawn: false }
    57.             }
    58.         }
    59.     });
    60.     // js合并
    61.     grunt.loadNpmTasks('grunt-contrib-concat');
    62.     // js压缩
    63.     grunt.loadNpmTasks('grunt-contrib-uglify');
    64.     // babel es转换
    65.     grunt.loadNpmTasks('grunt-babel');
    66.     // 语法检查
    67.     grunt.loadNpmTasks('grunt-contrib-jshint');
    68.     // css合并压缩
    69.     grunt.loadNpmTasks('grunt-contrib-cssmin');
    70.     // 监听
    71.     grunt.loadNpmTasks('grunt-contrib-watch');
    72.     // 注册构建任务
    73.     grunt.registerTask('default', ['concat', 'uglify', 'babel', 'jshint', 'cssmin']);
    74.     grunt.registerTask('myWatch', ['default', 'watch']);
    75. };

    .jshintrc jshint配置文件:

    1. {
    2. "curly": true,
    3. "eqeqeq": true,
    4. "eqnull": true,
    5. "expr": true,
    6. "immed": true,
    7. "newcap": true,
    8. "noempty": true,
    9. "noarg": true,
    10. "regexp": true,
    11. "browser": true,
    12. "devel": true,
    13. "node": true,
    14. "boss": false,
    15. "esversion": 6,
    16. "undef": true,
    17. "asi": false,
    18. "predef": ["define", "BMap", "angular", "BMAP_STATUS_SUCCESS"]
    19. }

  • 相关阅读:
    spring配置数据源
    ModelSim_10.5se软件安装
    Java实现手动操作定时任务功能的简单例子(动态创建定时任务)
    [漏洞分析] CVE-2022-2588 route4 double free内核提权
    map reduce案例超详细讲解
    Unity的WebGL平台动态加载glb/gltf测试
    java二手车交易平台计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
    English note 2
    Websocket获取B站直播间弹幕教程——第二篇、解包/拆包
    旋转倒立摆的起摆与稳摆---QYC
  • 原文地址:https://blog.csdn.net/qq_39683070/article/details/127417620