zoukankan      html  css  js  c++  java
  • Gruntjs随笔

    Q:Grunt为何物?

    A:一个专为JavaScript提供的构建工具。

    Q:啥是构建工具?

    A:在项目部署上线前,通常要将源文件压缩,合并,并拷贝到bch或trunk中。 在将js模块化后,又多了一个分析,提取业务代码中所依赖模块的工作。 解决这一系列繁重工作的自动化工具,称之为构建工具。

    Q:grunt是如何工作的?

    A:刚刚接触grunt,举个例子可能不太恰当,但应该可以让你先比较准确的认识她。 就好像一个万能工厂(grunt),只负责执行任务(Task),不关心每个任务到底都干了什么。 这些任务比如:

    • clean:删除临时文件

    • uglify:压缩

    • qunit:测试

    • concat:合并

    1、建立 package.json 文件(内容如下),然后运行 npm install 安装其相关依赖的包。

    {
        "name": "the-project-of-name",
        "version": "0.0.1",
        "author": "Jankerli <jankerli@gmail.com>",
        "description": "the-project-of-description",
        "dependencies": {
            "grunt": "*",
            "grunt-contrib-less": "*",
            "grunt-contrib-watch": "*",
            "grunt-contrib-uglify": "*",
            "grunt-contrib-cssmin": "*",
            "grunt-contrib-copy": "*"
        }
    }
    

    2、建立 Gruntfile.js 文件(如下内容请根据具体项目稍作修改),然后运行 grunt,就会在其根目录下看到 dest 文件夹了,去看看你需要的文件是否都在里面了?

    module.exports = function (grunt) {
     
        grunt.initConfig({
     
            pkg: grunt.file.readJSON('package.json'),
     
            // 编译 LESS 文件
            less: {
                compile: {
                    files: {
                        'assets/css/app.css': 'assets/css/app.less'
                    }
                }
            },
     
            // 压缩 CSS 文件
            cssmin: {
                options: {
                    report: 'gzip'
                },
                combine: {
                    files: {
                      'assets/css/app.min.css': 'assets/css/app.css'
                    }
                }
            },
     
            // 压缩合并 JS 文件
            uglify: {
                options: {
                    report: 'gzip',
                    mangle: true, // Specify mangle: false to prevent changes to your variable and function names.
                    banner: '/** \n' +
                            ' * -------------------------------------------------------------\n' +
                            ' * Copyright (c) 2013 Jankerli, All rights reserved. \n' +
                            ' * http://www.jankerli.com/ \n' +
                            ' *  \n' +
                            ' * @version: <%= pkg.version%> \n' +
                            ' * @author: <%= pkg.author%> \n' +
                            ' * @description: <%= pkg.description%> \n' +
                            ' * ------------------------------------------------------------- \n' +
                            ' */ \n\n'
                },
                myTarget: {
                    files: {
                        'assets/js/lib/libs.min.js': ['assets/js/lib/jquery-1.9.1.min.js',
                                                      'assets/js/lib/underscore-min.js',
                                                      'assets/js/lib/backbone-min.js'],
     
                        'assets/js/app.min.js': ['assets/js/app.js',
                                                 'assets/js/tpls.js',
                                                 'assets/js/view.js',
                                                 'assets/js/router.js']
                    }
                }
            },
     
            // 复制文件,打包到 dest 文件夹目录下
            copy: {
                main: {
                    files: [
                        {src: 'index.html', dest: 'dest/index.html'},
                        {src: ['assets/images/**'], dest: 'dest/'},
                        {src: ['assets/css/app.min.css'], dest: 'dest/'},
                        {src: ['assets/js/lib/libs.min.js'], dest: 'dest/'},
                        {src: ['assets/js/app.min.js'], dest: 'dest/'}
                    ]
                }
            },
     
            // 监控 LESS 文件
            watch: {
                scripts: {
                    files: ['assets/css/*.less'],
                    tasks: ['less', 'cssmin']
                }
            }
     
        });
     
        grunt.loadNpmTasks('grunt-contrib-less');
        grunt.loadNpmTasks('grunt-contrib-uglify');
        grunt.loadNpmTasks('grunt-contrib-cssmin');
        grunt.loadNpmTasks('grunt-contrib-watch');
        grunt.loadNpmTasks('grunt-contrib-copy');
     
        grunt.registerTask('default', ['less', 'cssmin', 'uglify', 'copy']);
     
    };
    
  • 相关阅读:
    使用存储过程查询并按每页10条记录分页显示图书借阅纪录
    两个div并排 左边div宽固定 右边自适应
    java比较时间及时间的转换
    java使用commons.io的FileUtils进行文件拷贝
    实现image宽度100%,高度与宽度一致
    vue请求前的loading动画效果
    vue项目加载前空白的动画过渡效果
    element-ui和semantic-ui冲突的解决方法--局部引入semantic-ui的css
    vue使用formdata上传多个图片,springboot以文件数组的形式接受
    快速创建vuepress项目(使用vuepress写文档)
  • 原文地址:https://www.cnblogs.com/zhepama/p/3080736.html
Copyright © 2011-2022 走看看