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

时间:2017-02-10 00:52:28

标签: gruntjs

我对咕噜咕噜咕噜咕噜咕噜咕噜咕噜咕噜我正在设置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')
                }

            }
        },
    },

});

或其他影响。这可能吗?还是我完全不合适?

2 个答案:

答案 0 :(得分:1)

经过几个小时的游戏,我想出了这个解决方案:

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']);

};

答案 1 :(得分:0)

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

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

也就是说,使用您想要的其他属性更新配置对象。