2015-10-13 66 views
1

我有具有以下結構一飲而盡文件:納入一飲而盡文件外部文件

// =============== helper JS stuff =============== 

var production = false; 

var folders = { 
    folder1: "./myfolder", 
    folder2: "./myfolder2"... 
} 

function Module() { 
this.jsFiles = ... 
this.cssFiles = ... 
} 

var Modules = [ 
    new Module({ first: module }), 
    new Module({ second: module })...] 

// =============== Tasks =============== 

gulp.task('myTask', function(){ 
    //work with modules 
}); 

我想(從模塊列表中特)分開等純定製(gulpfile.js)TAKS JavaScript的東西(至少)三個文件:

Solution 

-- gulpFolder 

---- consts.js  // declare here dirs/folders/other constants 
---- module.js  // helper 'Module' object declaration 
---- listModules.js // a list of 'Module's to work with (to update) 

-- gulpfile.js  // tasks definitions, works with the module list 

是否有可能只是「進口」到gulpfile.js只是簡單的JavaScript文件,如描述如下(如consts.jsmodule.js等)?

我試圖用requireDir

var requireDir = require('require-dir'); 
... 
var dir = requireDir('./website/!gulp'); // ? 

但是這個代碼似乎並沒有真正「進口」 jsfiles ......據我所知,requirerequireDir作品只能用模塊的NodeJS /文件...

+0

是否有一個原因,你爲什麼不能轉換'consts'和'模塊「模塊? –

回答

1

在節點中,每個javascript源文件是一個單獨的命名空間。當你require一個文件,你只能訪問那個文件有export -ed。這意味着您必須從其他每個文件中獲得export。例如:

module.js:

function Module() { 
this.jsFiles = ... 
this.cssFiles = ... 
} 
module.exports = Module; // export! 

listModules:

var Modules = [ 
    new Module({ first: module }), 
    new Module({ second: module })...] 

module.exports = Modules; // export! 

然後在你的主文件,你可以訪問這樣的代碼:

var Module = require("gulpFolder/module.js"); 
var Modules = require("gulpFolder/moduleList.js"); 

gulp.task('myTask', function(){ 
    //work with modules 
});