Grunt.js:我如何自己规范文件,就像Grunt那样
Grunt.js: how do I normalize files myself, the way that Grunt does?
使用grunt创建新任务时,即:
grunt.registerMultiTask('name', 'description', function() {...});
一个files对象在任务函数中作为this.files
可用。这是在grunt配置中查看传递给task.files
的值并对其进行解析,展开任何globbing的标准化结果。
第1期:
第一个问题是,我有一个任务可能需要重复执行几次。每次,它都希望使用files对象来获得与初始配置参数匹配的所有文件等的最新列表。例如:
grunt.registerMultiTask('sometask', 'description', function sometask() {
var files = this.files;
//do some stuff with files, then run this func again if needbe:
if(somecondition) sometask.call(this);
});
这里的问题是,files对象没有更新以反映我对文件结构所做的任何更改,因此下次调用该函数时,文件列表可能已过期。
我想做的是:
grunt.registerMultiTask('sometask', 'description', function sometask(renormal) {
//update this.files if we need to:
if(renormal) {
this.files = renormalize(this.data.files);
}
var files = this.files;
//do some stuff with files, then run this func again if needbe:
if(somecondition_is_matched) sometask.call(this, renormal);
});
第2期:
此外,也许我想制作一个需要两个大量文件映射的插件,所以在grunt配置中,我可能会有这样的东西:
grunt.initConfig({
...
someplugin: {
filesOne: [{
cwd: "hello"
src: ["something/**"],
dest: "another"
}],
filesTwo: {
"another2": ["soemthing2/*", "!something2/*.js"]
}
}
...
});
在插件中,我希望能够规范化filesOne
和filesTwo
,就像grunt规范化"files"一样,这样用户就可以以所有常用格式输入src-dest文件映射。
所以
grunt API似乎公开了用于扩展模式等的函数,但似乎没有提供任何东西来实现它在文件对象的后台所做的规范化。
我有什么遗漏吗?
实际上有一个方法grunt.task.normalizeMultiTaskFiles
:
grunt.registerMultiTask('sometask', 'description', function() {
var filesOne = grunt.task.normalizeMultiTaskFiles(
{files: this.data.filesOne}, this.target);
var filesTwo = grunt.task.normalizeMultiTaskFiles(
{files: this.data.filesTwo}, this.target);
})
相关文章:
- Grunt-connect在根目录之外提供静态文件
- grunt上的压缩文件夹不起作用
- Grunt-将多个文件最小化/处理为一个文件
- Grunt从typescript源生成空文件
- Grunt不看JS文件
- Grunt排除在生成过程中插入某些文件
- 在linux上使用软件包减少grunt的大小.文件路径对Jenkins来说太长
- 如何将json文件添加到grunt构建中
- 如何在Grunt.js中观察多个文件,但只在更改的文件上运行任务
- 无法使用grunt contrib clean跳过文件
- 从另一个grunt文件加载grunt任务
- 使用 grunt 检查单个 javascript 文件时如何解决依赖关系
- Grunt 可以直接从文件对象/数组或 glob 中的“src”值通过 HTTP 加载远程文件
- 你能查看你编译/执行的grunt.js文件吗
- Grunt-插件文件夹在构建dist后被破坏
- 如何配置Grunt.js文件以在构建过程中复制没有特定子目录的目录
- 如何使用grunt对文件夹中的所有文件运行sqlcmd ?
- 如何在grunt .tmpl文件中找出当前的构建任务
- Grunt Dist文件夹相对路径错误
- Grunt -替换文件中的空白行-正则表达式