• 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']);
     
    };
    
  • 相关阅读:
    hdoj 1305字典树水题之二
    nyoj 547 水池加水 priority_queue优先级队列初体验
    nyoj167 找奶牛病毒 “按位或”运算 递归
    HDOJ4525 吃鸡腿 腾讯马拉松(五)
    hdoj 4523 切蛋糕 腾讯马拉松 大数加法比较
    如何学好3D游戏引擎编程《转自3D游戏引擎网》
    priority_queue 优先级队列的基本应用和重载问题
    poj1611 传染病 并查集
    srand((unsigned)time(NULL))和rand()
    最近被一个windows mobile照相的问题给难住了
  • 原文地址:https://www.cnblogs.com/zhepama/p/3080736.html
Copyright © 2020-2023  润新知