javascript - 使用外部文件在 Grunt 中排序文件

标签 javascript gruntjs external concatenation

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

我所做的并且效果很好的是声明一个名为“库”的变量,该变量具有一个函数,该函数返回一个字符串,其中所有文件都按正确的顺序排列。

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 任务中的源。希望这对您有所帮助!

关于javascript - 使用外部文件在 Grunt 中排序文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34371726/

相关文章:

javascript - 如何在php标签内编写javascript

javascript - 如何将对象传递到 setinterval 中?

javascript - 运行 grunt 测试的 Angular 主存储库在 "bower"任务上失败

javascript - Grunt 一直在删除我的绝对路径

javascript - Grunt Lodash 模板可以在 Gruntfile.js 任务中使用吗?

javascript - 从另一个 Javascript 文件调用一个 Javascript 文件中的函数?

javascript - 如何用jquery控制图片扩展?

javascript - 谷歌地图 API 3/javascript : Markers suddenly become invisible

javascript - 如何使用 SublimeCodeIntel 在 Sublime Text 3 中将代码智能感知添加到外部 JS 文件

file - Titanium Android file.read() 从 Intent 中为外部媒体返回 null