`
liuguofeng
  • 浏览: 450419 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

任务配置详解—grunt入门指南

 
阅读更多

任务配置指的是grunt.initConfig({})中的任务配置,上一篇文章我们配置了uglify(这里指任务名,而不是插件名)任务,用于压缩js文件,接单演示了任务配置的功能。

这一篇教程将深入讲解任务配置的细节。

多任务目标

构建中有二个关键字:任务(task)和目标(target),一个任务可以包含多个任务目标。

grunt.initConfig({
    //任务:合并文件
    concat: {
        //目标:构建“foo”
        foo: {
 
        },
        //目标:构建“bar”
        bar: {
 
        }
    },
    //任务:压缩文件
    uglify: {
        //目标:压缩“bar”目标指定的文件
        bar: {
 
        }
    }
});

你可以只调用任务中一个目标的执行:

grunt.registerTask('default', ['uglify:bar']);

格式是任务名:目标名

非任务属性

在initConfig()的参数对象中的属性并非都是任务或目标,比如:

grunt.initConfig({
    pkg: {author:"minghe",email:"minghe@36@gmail.com"},
    //任务:压缩文件
    uglify: {
        //目标:压缩“bar”目标指定的文件
        bar: {
            options: {
                banner: '/*! <%= pkg.author %>'
            }
        }
    }
});

这里的pkg其实是构建配置,在任务中可以使用类似pkg.author这样的形式获取值。

Options

大部分的任务都带有options配置属性,用于配置插件的参数,比如常见的banner属性,向构建后文件头打印自定义信息。

uglify为例(uglify足够典型而且配置参数很丰富)

uglify: {
    bar: {
        options: {
            banner: '/*! <%= pkg.author %>*/',
            //添加文字到压缩后的文件尾部
            footer:'/*! 这是压缩文件尾部 */',
            //美化代码
            beautify: {
                //中文ascii化,非常有用!防止中文乱码的神配置
                ascii_only: true
            }
 
        }
    }
}

还有其他有意思的配置,留到下期演示。

Files

大部分的任务目标都是处理文件(watch也算是吧),所以文件的配置是任务目标的核心。

共有二种配置files的方式:

uglify: {
    build: {
        //源文件
        src: 'src/hello-grunt.js',
        //目标文件
        dest: 'build/hello-grunt-min.js'
    }
}

还有一种:

uglify: {
   files: {
        'build/hello-grunt-min.js': ['src/hello-grunt.js']
   }
}

明河推荐大家使用第二种方式,更为简洁直观。

files还支持额外的配置属性(需要额外配置属性时只能使用第一种配置方式。)比如下面的代码:

grunt.initConfig({
  concat: {
    bar: {
      files: [
        {src: ['src/bb1.js', 'src/bbb1.js'], dest: 'dest/b1/', filter: 'isFile'},
      ],
    },
  },
});

filter:过滤器(函数),函数参数为files的src,return true时才会构建该文件。

filter函数可以自定义:

grunt.initConfig({
  clean: {
    foo: {
      src: ['tmp/**/*'],
      filter: function(filepath) {
        return grunt.file.isDir(filepath);
      },
    },
  },
});

grunt.file.isDir()判断filepath是否是目录。

文件的简单正则匹配语法

文件名(目录路径)的匹配,基本上和ant一样。

  • * 匹配除了/外的任意数量的字符,比如foo/*.js
  • ? 匹配除了/外的单个字符
  • ** 匹配包含/的任意数量的字符,比如foo/**/*.js
  • ! 排除指定文件,比如src: ['foo/*.js', '!foo/bar.js']
  • {} 可以理解为“or”表达式,比如src: 'foo/{a,b}*.js'

用法举例:

//匹配foo目录下所有th开头的js文件
{src: 'foo/th*.js', dest: ...}
 
//等价于{src: ['foo/a*.js', 'foo/b*.js'], dest: ...}
{src: 'foo/{a,b}*.js', dest: ...}
 
//优先处理bar.js,然后再处理其他文件
{src: ['foo/bar.js', 'foo/*.js'], dest: ...}
 
//排除处理foo/bar.js文件
src: ['foo/*.js', '!foo/bar.js'], dest: ...}
 
分享到:
评论

相关推荐

    Grunt入门练习Demo

    ### 执行Grunt任务 保存`Gruntfile.js`后,在项目根目录下运行`grunt`命令,Grunt将执行默认任务,即合并和压缩JavaScript文件。如果启用了`watch`任务,当源文件发生变化时,Grunt会自动重新执行这些任务。 ### ...

    Grunt+Less+jQuery配置源码

    - `Gruntfile.js`:Grunt的任务配置文件,定义了项目的构建流程。 - `less`目录:存放所有的Less源码文件,可能有独立的样式文件或模块化的结构。 - `css`目录:Grunt编译Less后的目标文件夹,生成的CSS文件放在这里...

    grunt-cli模块

    **Grunt CLI模块详解** Grunt CLI(Command Line Interface)是Grunt的命令行界面工具,它是Grunt工作流程中的核心部分,允许开发者在终端中执行自动化任务。Grunt是JavaScript的世界里一个流行的构建工具,它能...

    Grunt 离线安装包

    **Grunt 离线安装包详解** 在前端开发领域,构建工具的使用越来越普遍,它们可以帮助开发者自动化处理各种任务,比如编译、压缩、测试等。Grunt 就是这样一款基于 Node.js 的任务运行器,它允许我们定义一系列的...

    grunt-1.4.1.tar.gz

    《Grunt:JavaScript任务自动化工具详解》 在前端开发领域,效率是至关重要的。随着项目规模的扩大,手动处理诸如编译、压缩、合并、测试等重复性工作变得越来越繁重。为了解决这一问题,JavaScript社区诞生了众多...

    grunt打包配置

    ### Grunt 打包配置详解 #### 一、前言 Grunt 是一款非常流行的 JavaScript 任务自动化工具,被广泛应用于前端项目的构建流程之中。它能够帮助开发者执行一系列的重复性工作,比如编译代码、合并文件、压缩资源等...

    grunt项目构建样例

    5. **运行Grunt任务** 在配置完成后,可以通过命令行执行`grunt`或特定任务(如`grunt concat`,`grunt uglify`),Grunt会按照配置自动执行相关任务。 6. **最佳实践** - 使用`Grunt.watch`监听文件变化,自动...

    grunt-contact 模块

    5. 运行`grunt`命令启动任务,或者配置`grunt-contrib-watch`自动执行任务。 以上是对`grunt-contact`模块及其可能应用的解释和分析。由于缺少具体的插件文档和实现细节,这些推测基于Grunt的一般工作原理和常见...

    grunt.js cookbook

    - **环境配置管理**:根据不同环境(开发、测试、生产)配置不同的Grunt任务,实现环境间的平滑切换。 #### 六、高级用法 - **多环境支持**:在`Gruntfile.js`中可以通过条件判断实现不同环境下的任务配置。 - **...

    grunt-ssh, SSH,Grunt的SFTP任务.zip

    grunt-ssh, SSH,Grunt的SFTP任务 新主人 启动 12 -23-2015,我正站在两个巨人( @chuckmo和 @andrewrjones) 作为这个项目维护者的肩膀上) 。 欢迎捐赠,如往常。 ( 这里消息也将在下一次发布时删除) 。静音 ssh

    Grunt中文文档.doc

    2. **任务配置**:定义在`grunt.initConfig()`中的对象,提供了Grunt任务所需的数据。 3. **任务加载**:通过`grunt.loadNpmTasks('plugin-name')`加载Grunt插件。 4. **自定义任务**:使用`grunt.registerTask()`...

    grunt-cli压缩包-0.1.13版本

    `grunt-cli`是Grunt(一个JavaScript任务运行器)的命令行接口,它允许开发者在命令行中执行Grunt任务。这个压缩包包含了`grunt-cli`的0.1.13版本,这是一个早期但仍然被一些项目依赖的版本。在这个版本中,除了`...

    grunt学习资料

    **Grunt 学习资料详解** Grunt 是一个基于任务的JavaScript构建工具,它通过预设的任务自动化项目构建过程,包括编译、测试、清理、压缩等。在前端开发中,Grunt 可以极大地提高工作效率,使得开发者能够专注于代码...

    Grunt前端开发工具部署

    在大型项目中,你可能需要在每次代码提交时自动运行Grunt任务。这可以通过集成Git钩子或者持续集成服务如Jenkins、Travis CI实现。通过配置这些服务,你可以在代码合并到主分支前自动执行代码检查、测试和构建过程,...

    grunt学习笔记

    **Grunt 学习笔记** Grunt 是一个基于任务运行器的 JavaScript 工具,它在前端开发领域中被广泛使用,主要用于自动化构建、测试、压缩、合并...记住,合理地规划和编写任务配置,能够使 Grunt 更好地服务于你的项目。

    Grunt安装与使用

    Grunt是JavaScript世界中的一款任务自动化工具,它允许开发者通过配置文件定义一系列的任务,实现代码的编译、压缩、测试、部署等自动化工作流程。Grunt依赖于Node.js环境,因此在使用Grunt之前,我们需要先安装Node...

    grunt-1.0.1.tar.gz

    四、Grunt任务与插件 Grunt的核心是任务(task),任务可以是简单的命令行操作,也可以是复杂的脚本集合。Grunt提供了许多内置任务,如`clean`(清理目录)、`concat`(合并文件)和`uglify`(压缩JavaScript代码)...

    grunt demo

    Grunt 依赖于 JSON 格式的配置文件 `Gruntfile.js`,在其中定义任务和插件,使得整个构建过程可定制化且易于管理。 **Grunt 的工作原理** Grunt 的核心理念是“配置优于代码”。开发者无需编写大量重复的脚本,...

    time-grunt, 显示grunt任务的执行执行时间.zip

    time-grunt, 显示grunt任务的执行执行时间 时间 grunt 显示 grunt任务的经过执行时间 安装$ npm install --save-dev time-grunt用法// Gruntfile.jsmodule.exports =

Global site tag (gtag.js) - Google Analytics