从外部文件加载 Grunt 任务属性



我对咕噜声很陌生,实际上只有几个小时。我正在设置 grunt 以使用 grunt-cache-breaker 缓存破坏我的网站。现在,当我手动输入每个文件源示例时,我已经让它工作了:

grunt.initConfig({

    cachebreaker: {
        dev: {
            options: {
                match: ['.js', '.css', 'min.css'],
                src: {
                    path: 'TEST/Apps/**/*'
                }
            },
            files: {
                src: ['TEST/Apps/AppTemplate/v1.0.0/index.html',
                      'TEST/Apps/Case_Attributes/v1.0.0/index.html',
                      'TEST/Apps/Case_CorrespondenceReferences/v1.0.0/index.html',
                ',    
                ]
            }
        },
    },

}(;

但是,我真正想做的是能够从预生成的文本文件中有问题地构建 files.src 列表,如下所示:

grunt.initConfig({
    cachebreaker: {
        dev: {
            options: {
                match: ['.js', '.css', 'min.css'],
                src: {
                    path: 'TEST/Apps/**/*'
                }
            },
            files: {
                src: function (){
                    return grunt.file.read('config.txt')
                }
            }
        },
    },

}(;

或与此相关的内容。这可能吗?还是我完全偏离了目标?

又玩了几个小时后,我想出了这个解决方案:

module.exports = function(grunt) {
grunt.initConfig({
   config: grunt.file.readJSON('config.json'),  
   cachebreaker: {
        dev: {
            options: {
                match: ['.js', '.css', 'min.css'],
                src: {
                    path: 'TEST/Apps/**/*'
                }
            },
            files: {
                src: ['<%= config %>'], 
            }
        },
    },
});
grunt.loadNpmTasks('grunt-cache-breaker');
grunt.registerTask('default', ['cachebreaker']);
};

一种不同且非常通用的方法是在运行时生成任务参数。假设您将文件名列表加载到数组 list 中。拨打grunt.initConfig()后,您可以执行以下操作:

grunt.config.merge({
    cachebreaker: {
        dev: {
            files: { src: list }
        }
    }
}),

也就是说,使用所需的这些其他属性更新配置对象。

最新更新