[英]Process files by custom Grunt task
我是新來的...我只是試圖實現一個自定義任務(使用TypeScript
),該任務將遍歷一組給定的文件並進行一些處理。 這是我到目前為止所擁有的...
function gruntFile(grunt: IGrunt): void {
grunt.registerMultiTask("custom", "...", () => {
this.files.forEach(function(next) {
...
});
});
var config: grunt.config.IProjectConfig = {
custom: {
files: [
"folder1/*.json",
"folder2/**/*.json"
]
}
};
grunt.initConfig(config);
}
(module).exports = gruntFile;
目前,我在配置上以及如何在自定義任務處理程序函數中訪問files數組時遇到困難。 Grunt給我一個錯誤,它無法讀取未定義的forEach
屬性。 我還嘗試了一個看起來像這樣的配置...
var config = {
custom: {
files : [
{ src: "folder1/*.json" },
{ src: "folder2/**/*.json" }
]
}
};
不確定,但是我已經在一些教程中看到了...
我已經看過幾個示例grunt文件,但是在每個示例中,配置看起來都有些不同,或者文件與導入的任務和模塊一起使用,因此這些示例沒有顯示如何訪問配置的文件。 任何能幫助我更好地了解其工作原理(以及我做錯了什么)的指導都值得贊賞。
更新資料
我發現可以通過config-property查詢選項,但是我不確定這是否是正確的方法。 在我的任務處理程序中,我這樣做是為了查詢已配置文件的列表...
var files = grunt.config.get("custom.files");
...這將返回期望的數組(但是我發現通過路徑表達式查詢選項有點奇怪)。 我意識到(通過使用TypeScript
)的范圍this
不是當前任務的上下文; 這就是為什么files
始終未定義的原因。 將對registerMutliTask
的調用更改為...
grunt.registerMultiTask("custom", "...", function() { ... });
...解決了這個問題。 我在路徑表達式中使用通配符; 我希望Grunt可以擴展這些表達式並為我提供所有匹配路徑的列表。 此功能是否存在,還是必須自己創建?
通過使用以下代碼,我能夠遍歷配置的文件(文件模式)...
grunt.registerMultiTask("custom", "...", function() {
grunt.file
.expand(this.data)
.forEach(function(file) {
...
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.