用外部文件对Grunt中的文件进行排序

Ordening files in Grunt with external file

本文关键字:文件 排序 Grunt 外部      更新时间:2023-09-26

我正在使用Grunt contrib concat配置Grunt,以连接20个javascript文件。它们必须按照特定的顺序排列,我想知道是否有一种巧妙的方法可以做到这一点,而不会弄乱我的Gruntfile.js。

我所做的和行之有效的是,用一个函数声明一个名为"libraries"的变量,该函数返回一个字符串,其中所有文件都按正确的顺序排列。

var libraries = new (function () {
    return [
        '/javascript/libs/jquery.min.js',
        '/javascript/libs/jquery.address.js',
        '/javascript/libs/jquery.console.js'
    ];
});

然后concat(简化,只是一个例子):

concat: {
    libs: {
        files: {
            'libs.js' : [libraries],                
        },
    },
    main: {
        files: {
            'main.js' : [main]
        }
    }   
},

因此,当我在任务配置中调用"库"时,一切都很好,但我想在一个单独的文件中声明这个列表。不幸的是,我找不到任何东西,也不知道这是否可能。希望有人能帮我!提前感谢:-)

我找到了一个解决方案!由于Grunt是在NodeJS上构建的,所以可以使用module.exports。我所做的是设置一个名为libraries.js的外部文件,该文件位于我的Grunt目录中。

var exports = module.exports = {};
exports.customLibrary = function () {
    return [
        // Path to a library
        // Path to another library
        // and so on...
    ];
};
exports.mainScripts = function () { 
    return [
        // Path to a library
        // Path to another library
        // and so on...
    ];
};

然后我通过在Gruntfile.js 中声明一个变量来导入这个模块

var libraries                   = require('../javascript/libraries.js');

为了使用libraries.js中声明的方法,我又设置了两个变量,它们以所需的顺序返回一个包含所有必要文件的字符串:

var customLibrary               = libraries.customLibrary();
var mainScripts                 = libraries.mainScripts();

我使用这些变量来定义concat任务中的源。希望这有帮助!