JavaScript 项目构建工具 Grunt 实践:任务和指令

简介:    Grunt 是一个基于任务的 JavaScript 项目命令行构建工具,运行于 Node.js 平台。Grunt 能够从模板快速创建项目,合并、压缩和校验 CSS & JS 文件,运行单元测试以及运行静态服务器。

   Grunt 是一个基于任务的 JavaScript 项目命令行构建工具,运行于 Node.js 平台。Grunt 能够从模板快速创建项目,合并、压缩和校验 CSS & JS 文件,运行单元测试以及运行静态服务器。上一篇文章《JavaScript 项目构建工具 Grunt 实践:安装和创建项目框架》介绍了 Grunt 安装和创建项目框架步骤,这篇文章介绍 Grunt 中的任务和指令。

 

 

Grunt 任务

  Grunt 内置下面六种基本的任务:

  •  init - 从模板生成项目框架
  •  concat - 合并文件
  •  lint - 使用 JSHint 校验代码
  •  min - 使用 UglifyJS 压缩代码
  •  quint - 运行 Qunit 单元测试(依赖 PhantomJS
  •  server - 启动静态服务器

  任务按使用方式可以分为别名任务、多任务和自定义任务。

  一、别名任务

  基本语法:

grunt.registerTask(taskName, [description, ] taskList);

  taskName:任务别名,descripation:任务描述,taskList:任务列表。

  使用示例:

grunt.registerTask('theworks', 'lint qunit concat min');

  这样定义以后,下面两条命令是等价的:

grunt theworks
grunt lint qunit concat min

  如果别名是 "default",那么命令还可以更简单,只需要输入 grunt 就可以了。

grunt.registerTask('default', 'lint qunit concat min');

  下面三条命令是等价的:

grunt
grunt default
grunt lint qunit concat min

  二、多任务

  多任务是在如果没有指定任务目标的时候隐式地遍历所有的目标。例如下面的配置,运行 grunt lint:test 或者是 grunt lint:lib 都是校验特定的目录下的 JavaScript 文件,如果是运行 grunt lint 则是自动运行 test、lib 和 grunt 三个目标。

/*global config:true, task:true*/
grunt.initConfig({
  lint: {
    test: ['test/*.js'],
    lib: ['lib/*.js'],
    grunt: ['grunt.js']
  }
});

  三、自定义任务

  如果你的任务不遵循多任务模式,可以自定义任务:

grunt.registerTask('default', 'My "default" task description.', function() {
  grunt.log.writeln('Currently running the "default" task.');
});

  在任务里还可以嵌套其它任务:

grunt.registerTask('foo', 'My "foo" task.', function() {
  // Enqueue "bar" and "baz" tasks, to run after "foo" finishes, in-order.
  grunt.task.run('bar baz');
  // Or:
  grunt.task.run(['bar', 'baz']);
});

  甚至运行异步任务:

grunt.registerTask('asyncfoo', 'My "asyncfoo" task.', function() {
  // Force task into async mode and grab a handle to the "done" function.
  var done = this.async();
  // Run some sync stuff.
  grunt.log.writeln('Processing task...');
  // And some async stuff.
  setTimeout(function() {
    grunt.log.writeln('All done!');
    done();
  }, 1000);
});

Grunt 指令

  Grunt 内置下面五种指令:

  <config:prop.subprop>

  用于扩展 prop.subprop 配置属性的值。

  <json:file.json>

  用于调用通过 grunt.file.parseJSON 从 file.json 解析出来的对象。

  <banner:prop.subprop>

  用于访问 prop.subprop 参数属性,通过 grunt.template.process 解析。

  <file_strip_banner:file.js>

  用于引入将要嵌入注释的脚本文件

  <file_template:file.js>  

  用于引入模板文件,通过 grunt.template.process 解析。

您可能感兴趣的相关文章

 

本文链接:JavaScript 项目构建工具 Grunt 实践:任务和指令

编译来源:梦想天空 ◆ 关注前端开发技术 ◆ 分享网页设计资源

作者:山边小溪
主站:yyyweb.com 记住啦:)
欢迎任何形式的转载,但请务必注明出处。

相关文章
|
3月前
|
前端开发 JavaScript UED
理解宏任务和微任务:JavaScript 异步编程的必备知识(下)
理解宏任务和微任务:JavaScript 异步编程的必备知识(下)
理解宏任务和微任务:JavaScript 异步编程的必备知识(下)
|
3月前
|
前端开发 JavaScript 数据处理
理解宏任务和微任务:JavaScript 异步编程的必备知识(上)
理解宏任务和微任务:JavaScript 异步编程的必备知识(上)
理解宏任务和微任务:JavaScript 异步编程的必备知识(上)
|
2天前
|
JSON JavaScript 前端开发
在JavaScript中,常用的指令
【4月更文挑战第21天】在JavaScript中,常用的指令
10 2
N..
|
29天前
|
JavaScript 前端开发 开发工具
Vue.js指令
Vue.js指令
N..
9 0
N..
|
29天前
|
JavaScript 前端开发 开发者
Vue.js的v-for指令
Vue.js的v-for指令
N..
11 1
|
4月前
|
JavaScript 索引
JS中数组的增删改查操作实践总结
JS中数组的增删改查操作实践总结
48 0
|
1月前
|
Web App开发 JavaScript 前端开发
深入浅出:Node.js 在后端开发中的应用与实践
【2月更文挑战第13天】本文旨在探讨Node.js这一流行的后端技术如何在现代Web开发中被应用以及它背后的核心优势。通过深入分析Node.js的非阻塞I/O模型、事件驱动机制和单线程特性,我们将揭示其在处理高并发场景下的高效性能。同时,结合实际开发案例,本文将展示如何利用Node.js构建高性能、可扩展的后端服务,以及在实际项目中遇到的挑战和解决方案。此外,我们还将讨论Node.js生态系统中的重要工具和库,如Express.js、Koa.js等,它们如何帮助开发者快速搭建和部署应用。通过本文的探讨,读者将获得对Node.js在后端开发中应用的深入理解,以及如何有效利用这一技术来提升开发效率
|
2月前
|
JavaScript 前端开发 UED
JavaScript中的事件委托机制及实践应用
事件委托是JavaScript中常用的性能优化技巧,通过将事件监听器绑定在父元素上,实现对子元素事件的统一管理,减少页面中事件处理函数的数量,提升页面性能。本文将介绍事件委托的原理和实践应用,帮助开发者更好地理解和运用这一技术。
|
2月前
|
Rust 前端开发 JavaScript
Rust与JavaScript的跨语言交互:探索与实践
本文旨在探讨Rust与JavaScript之间的跨语言交互方法。我们将深入了解WebAssembly(Wasm)的角色,以及它如何使得Rust与JavaScript能够在Web应用中和谐共处。此外,我们还将介绍Rust与JavaScript的集成方式,包括Rust编译到Wasm、使用wasm-bindgen进行Rust与JavaScript的绑定,并通过实际案例展示如何实现两者之间的交互。
|
3月前
|
开发框架 JavaScript 前端开发
深入探讨Vue.js核心技术及uni-app跨平台开发实践
深入探讨Vue.js核心技术及uni-app跨平台开发实践
48 0