使用外部文件

时间:2015-12-19 14:14:42

标签: javascript gruntjs external concat

我正在使用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]
        }
    }   
},

因此,当我在任务配置中调用'libraries'时,一切正常,但我想在单独的文件中声明此列表。 不幸的是我找不到任何东西,也不知道这是否可能。希望有人能帮助我!在此先感谢: - )

1 个答案:

答案 0 :(得分:1)

我找到了解决方案!由于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任务中的源代码。希望这有用!