2016-08-04 20 views
5

我在尋找將我的gulpfile.js assetssrc變量拆分爲單獨的文件,以便我可以更好地管理它們。例如:從單獨的gulp文件導入/讀取變量

.... 

var scripts = ['awful.js', 'lot.js', 'of.js', 'js.js', 'files.js'] 

....(somewhere down the line) 

gulp.task('vendorjs', function() { 
    return gulp.src(scripts) 

     .pipe(concat('vendor.js')) 
     .pipe(rename({suffix: '.min'})) 
     .pipe(uglify()) 
     .pipe(gulp.dest(paths.root + 'dist')) 
     .pipe(notify({ message: 'vendorjs task completed' })); 
}); 

那麼,我基本上是有興趣,如果那裏有一種方式實際移動到一個單獨的文件中scripts變量,能夠從gulpfile.js訪問它。

我一直在尋找到類似:

require("fs").readFile('gulp/test.js', function(e, data) { 
    //(test.js would be the file that holds the scripts var) 
}); 

Howerver而它讀取該文件的內容,我仍然無法從gulpfile.js訪問它。任何提示或想法都非常感謝。

回答

7

的Node.js允許您使用require()導入其他文件。它支持three types of files

  • JSON文件。請參閱DavidDomain's answer
  • Binary Node.js插件。對你的用例沒有用處。
  • JavaScript文件。那就是你想要的。

對於JavaScript文件從require()返回的值是分配給module.exports在導入文件中的一個。

所以對你的使用情況:

一飲而盡/ test.js

var arrayOfFiles = ["awful.js", "lots.js"]; 
arrayOfFiles.push("of.js"); 
arrayOfFiles.push("js.js"); 
arrayOfFiles.push("files.js"); 
for (var i = 0; i < 10; i++) { 
    arrayOfFiles.push("some_other_file" + i + ".js");  
} 

module.exports = { 
    scripts: arrayOfFiles 
}; 

gulpfile.js

var test = require('gulp/test.js'); 

gulp.task('vendorjs', function() { 
    return gulp.src(test.scripts) 
    .pipe(concat('vendor.js')) 
    .pipe(rename({suffix: '.min'})) 
    .pipe(uglify()) 
    .pipe(gulp.dest(paths.root + 'dist')) 
    .pipe(notify({ message: 'vendorjs task completed' })); 
}); 
+0

聽起來是正確的,測試了它並且工作得很好。謝謝! (20小時內將發送賞金:)) – RGLSV

2

您可以使用json文件來存儲您的資產或源文件位置並將其加載到您的gulp文件中。

例如:

// config.json 

{ 
    "scripts": ["awful.js", "lot.js", "of.js", "js.js", "files.js"] 
} 

而在你一飲而盡文件,你會怎麼做

// gulpfile.js 

var config = require('./config'); 

var scripts = config.scripts; 

console.log(scripts); 
+0

的事情是,該文件會比更復雜這更像是一個'object',像:'var scripts = {main:['some-script],notmain:['etc']}'。我會盡可能地給一個鏡頭,看看它是如何工作的。謝謝! – RGLSV

+0

JSON從JavaScript派生,因此您應該能夠構建可以解析爲符合您需要的對象的相當複雜的結構。只要你使用有效的json語法。 – DavidDomain

+0

好吧,但是我想在這個文件中使用更多'動態'的方法,這就是爲什麼我要求一個'.js'文件;比如可能傳遞一個'for循環'並且動態地構建最終輸出 - 不知道這是否是一個單詞和/或正確的單詞:D – RGLSV