将 CDN link 列表连接到文件 (gulp)
Concatanate a CDN link list to a file (gulp)
我有一个 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目标。
我不能给你一个完整的答案,因为我没有做过这样的事情,但我会做的是,首先下载(使用 GET 请求)将它保存在一个临时文件夹中,然后获取每个使用 gulp 下载的文件并将它们合并为一个文件,如果它只是 Javascript,则将其压缩。
但问题是您需要先下载它。
PD:您可以使用 fs.unlink 删除临时文件。
PD2:您可以先使用 Gulp 下载它,Gulp 毕竟是 Node ;)
祝你好运!
这个答案取自这里:
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 版本。请求包允许流式传输。我们在 return 中得到的是一个可读流。
2) 我们使用 vinyl-source-stream 创建了一个有效的 vinyl 文件对象。这使其与 Gulp
兼容
3) 我们的主文件照例从文件系统中选择
4) merge2 包允许我们合并两个流
5) 两个流的内容都被转换为文本缓冲区,因此 gulp-concat 可以处理它们。
我有一个 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目标。
我不能给你一个完整的答案,因为我没有做过这样的事情,但我会做的是,首先下载(使用 GET 请求)将它保存在一个临时文件夹中,然后获取每个使用 gulp 下载的文件并将它们合并为一个文件,如果它只是 Javascript,则将其压缩。
但问题是您需要先下载它。
PD:您可以使用 fs.unlink 删除临时文件。 PD2:您可以先使用 Gulp 下载它,Gulp 毕竟是 Node ;)
祝你好运!
这个答案取自这里: 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 版本。请求包允许流式传输。我们在 return 中得到的是一个可读流。
2) 我们使用 vinyl-source-stream 创建了一个有效的 vinyl 文件对象。这使其与 Gulp
兼容3) 我们的主文件照例从文件系统中选择
4) merge2 包允许我们合并两个流
5) 两个流的内容都被转换为文本缓冲区,因此 gulp-concat 可以处理它们。