簡體   English   中英

通過自定義Grunt任務處理文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM