2015-12-19 21 views
2

我将grunt-contrib-concat配置为像20个javascript文件一样进行连接。他们必须按照特定的顺序,我想知道是否有一个干净的方式来做到这一点,而不会搞乱我的Gruntfile.js。使用外部文件将Grunt中的文件与外部文件相关联

我做了什么,什么运转良好,是声明一个名为'库'的变量,其函数返回一个字符串,所有文件都按正确的顺序。

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] 
     } 
    } 
}, 

所以,当我称之为“图书馆”在我的任务配置一切工作正常,但我想宣布这个名单中单独的文件。 不幸的是我找不到任何东西,我也不知道这是否可能。希望有人能帮助我!在此先感谢:-)

回答

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