2015-10-13 80 views
0

我有一個CDN(或遠程)腳本列表(包含完整的URL)。我想將其轉換爲一個連接文件(all.js)。 我可以用吞噬嗎?換句話說,它是正確的工具嗎?將CDN鏈接列表連接到一個文件(gulp)

// Does not work (no error, but no file generated) 
var gulp = require('gulp'); 
var concat = require('gulp-concat'); 

gulp.task('scripts', function() { 
    return gulp.src(['https://code.jquery.com/jquery-2.1.4.min.js']) 
    .pipe(concat('all.js')) 
    .pipe(gulp.dest('./dist/')); 
}); 

我是新來的大口,我沒有發現一些搜索後的答案,也許我不知道如何搜索或我不明白一飲而盡目標。

回答

0

我不能給你一個完整的答案,因爲我沒有做過這樣的事情,但我會做什麼,首先下載(使用GET請求)將其保存在臨時文件夾中,然後讓每一個文件用gulp下載並將它們連接成一個文件,如果它只是Javascript,則將其醜化。

但事情是你需要先下載它。

PD:您可以使用fs.unlink刪除臨時文件。 PD2:您可以先使用Gulp下載它,Gulp是Node後繼;)

祝您好運!

-2

這個答案就是從這裏取: http://fettblog.eu/gulp-merge-cdn-files-into-your-pipeline/

var gulp = require('gulp'); 
var source = require('vinyl-source-stream'); 
var request = require('request'); 
var merge = require('merge2'); 
var concat = require('gulp-concat'); 
var buffer = require('gulp-buffer'); 

gulp.task('js', function() { 

    var jquery = request('http://code.jquery.com/jquery-latest.js') /* 1 */ 
    .pipe(source('jquery.js'));         /* 2 */ 
    var main = gulp.src('main.js');         /* 3 */ 

    return merge(jquery, main)          /* 4 */ 
    .pipe(buffer())            /* 5 */ 
    .pipe(concat('concat.js')) 
    .pipe(gulp.dest('dist')); 
}) 

1)我們要求從jQuery CDN的最新jQuery的版本。請求包允許流式傳輸。我們得到的回報是可讀的流。

2)我們用乙烯源流創建一個有效的乙烯基文件對象。這使得與咕嘟咕嘟

3)我們的主要文件被從文件系統如常

4)merge2包允許我們結合兩個流

5)兩個流的內容選擇的兼容轉換爲文本緩衝區,所以gulp-concat可以處理它們。

+0

請不要只是放棄這樣的鏈接,你可以構建一個適當的迴應,並說明你的來源,如果需要的話。問題是:如果您的鏈接無法訪問會發生什麼?你的問題仍然是答案? – dkg