0

我有一个 CDN(或远程)脚本列表(带有完整的 URL)。我想将其转换为串联文件 ( all.js)。我可以用 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/'));
});

我是 gulp 的新手,经过一番搜索后我没有找到答案,也许我不知道如何搜索或者我不了解 gulp 的目标。

4

2 回答 2

0

我不能给你一个完整的答案,因为我没有做过这样的事情,但我要做的是首先下载(使用 GET 请求)将其保存在临时文件夹中,然后使用 gulp 下载每个文件并将它们连接到一个文件中,如果它只是 Javascript,则将其丑化。

但问题是你需要先下载它。

PD:您可以使用 fs.unlink 删除临时文件。PD2:你可以先用 Gulp 下载它,Gulp 毕竟是 Node ;)

祝你好运!

于 2015-10-14T07:22:43.670 回答
-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) 我们使用vinyl-source-stream 创建一个有效的vinyl 文件对象。这使得它与 Gulp 兼容

3)我们的主文件像往常一样从文件系统中选择

4) merge2 包允许我们合并两个流

5) 两个流的内容都被转换为文本缓冲区,因此 gulp-concat 可以处理它们。

于 2015-12-20T13:37:49.957 回答