grunt.util
Gruntfile 和任务的杂项实用工具。
grunt.util.kindOf
返回值的"类型"。类似于 typeof
,但返回内部 [Class](Class/)
值。可能的结果是 "number"
、"string"
、"boolean"
、"function"
、"regexp"
、"array"
、"date"
、"error"
、"null"
、"undefined"
和通用的 "object"
。
grunt.util.kindOf(value)
grunt.util.error
返回一个新的 Error 实例(可以被抛出),并带有适当的消息。如果指定了 Error 对象而不是 message
,则将返回该对象。
另外,如果为 origError
指定了 Error 对象,并且 Grunt 运行时带有 --stack
选项,则将转储原始 Error 堆栈。
grunt.util.error(message [, origError])
grunt.util.linefeed
换行符,针对当前操作系统进行了规范化。(在 Windows 上为 \r\n
,否则为 \n
)
grunt.util.normalizelf
给定一个字符串,返回一个新字符串,其中所有换行符都针对当前操作系统进行了规范化。(在 Windows 上为 \r\n
,否则为 \n
)
grunt.util.normalizelf(string)
grunt.util.recurse
递归遍历嵌套的对象和数组,为每个非对象值执行 callbackFunction
。如果 continueFunction
返回 false
,则将跳过给定的对象或值。
grunt.util.recurse(object, callbackFunction, continueFunction)
grunt.util.repeat
返回字符串 str
重复 n
次。
grunt.util.repeat(n, str)
grunt.util.pluralize
给定 "a/b"
形式的 str
,如果 n
是 1
,则返回 "a"
,否则返回 "b"
。如果 '/' 不适合您,可以指定自定义分隔符。
grunt.util.pluralize(n, str, separator)
grunt.util.spawn
生成一个子进程,跟踪其 stdout、stderr 和退出代码。该方法返回对生成的子进程的引用。当子进程退出时,将调用 doneFunction
。
grunt.util.spawn(options, doneFunction)
options
对象具有以下可能的属性:
var options = {
// 要执行的命令。它应该在系统路径中。
cmd: commandToExecute,
// 如果指定,将生成与当前正在运行的相同的 grunt 二进制文件作为子命令,
// 而不是 "cmd" 选项。默认为 false。
grunt: boolean,
// 要传递给命令的参数数组。
args: arrayOfArguments,
// Node.js child_process spawn 方法的其他选项。
opts: nodeSpawnOptions,
// 如果设置了此值并发生错误,它将用作值,
// 并将 null 作为错误值传递。
fallback: fallbackValue
};
doneFunction
接受以下参数:
function doneFunction(error, result, code) {
// 如果退出代码非零且未指定回退,则为 Error 对象,否则为 null。
error
// 结果对象是一个具有 .stdout、.stderr 和 .code(退出代码)属性的对象。
result
// 当结果强制转换为字符串时,如果退出代码为零,则值为 stdout,
// 如果退出代码非零且指定了回退,则为回退,
// 如果退出代码非零且未指定回退,则为 stderr。
String(result)
// 数字退出代码。
code
}
grunt.util.toArray
给定一个数组或类数组对象,返回一个数组。非常适合将 arguments
对象转换为数组。
grunt.util.toArray(arrayLikeObject)
grunt.util.callbackify
规范化"返回值"和"将结果传递给回调"的函数,以始终将结果传递给指定的回调。如果原始函数返回一个值,则该值现在将传递给回调,回调被指定为最后一个参数,位于所有其他预定义参数之后。如果原始函数将值传递给回调,它将继续这样做。
grunt.util.callbackify(syncOrAsyncFunction)
这个示例可能更好地说明了这一点:
function add1(a, b) {
return a + b;
}
function add2(a, b, callback) {
callback(a + b);
}
var fn1 = grunt.util.callbackify(add1);
var fn2 = grunt.util.callbackify(add2);
fn1(1, 2, function(result) {
console.log('1 plus 2 equals ' + result);
});
fn2(1, 2, function(result) {
console.log('1 plus 2 equals ' + result);
});
内部库
grunt.util.namespace
用于解析对象中深度嵌套属性的内部库。
grunt.util.task
用于任务运行的内部库。
外部库
已弃用
下面列出的所有外部库现在都已弃用。
请使用 npm 管理项目依赖中的这些外部库。
例如,如果要使用 Lo-Dash,请先安装:npm install lodash
,然后在 Gruntfile
中使用:var _ = require('lodash');
。
grunt.util._
已弃用
grunt.util._.str
可用于与现有 Lo-Dash 方法冲突的方法。
grunt.util.async
已弃用
Async - 用于 node 和浏览器的异步实用工具。
grunt.util.hooker
已弃用
JavaScript Hooker - 用于调试等的猴子补丁(钩子)函数。