如何将当前源文件名添加到 gulp-header
How to add current source filename to gulp-header
我缩小并连接供应商文件。最好将 vendor.min.js 中的脚本与一些信息(如原始文件名)分开。我正在使用 gulp-header 将 header 添加到我的输出文件。
// Minify vendor JS
gulp.task('minify-vendor-js', function() {
return gulp.src([
'lib/**/*.js'
])
.pipe(uglify())
.on('error', function (err) { gutil.log(gutil.colors.red('[Error]'), err.toString()); })
.pipe(header("// Vendor Package (compressed) - all rights reserved to the respective owners\r\n"))
.pipe(concat('vendor.min.js'))
.pipe(gulp.dest('js'))
});
vendor.min.js 应该看起来像这样(注意 "compressed from..." headers:
// compressed from jquery.js
!function(e,t){"object"==typeof module&&"object"==typeof module.exports?mod ...
// compressed from bootstrap.js
if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript ...
如何将当前 gulp.src 文件名放入 header 文本中?
您可以将 gulp-tap 添加到您的管道,它可以检查流中的每个文件并从中提取相关信息:
var path = require('path');
var tap = require('gulp-tap');
// Minify vendor JS
gulp.task('minify-vendor-js', function() {
return gulp.src([
'lib/**/*.js'
])
.pipe(uglify())
.on('error', function (err) { gutil.log(gutil.colors.red('[Error]'), err.toString()); })
// .pipe(tap(function (file) {
// file.contents = Buffer.concat([
// new Buffer( '// compressed from ' + path.basename(file.path) + '\r\n'),
// file.contents
// ]);
// }))
// EDIT: replaced the above tap pipe with the following
.pipe(header('// compressed from ${filename} \r\n'))
.pipe(concat('vendor.min.js'))
// .pipe(tap(function (file) {
// file.contents = Buffer.concat([
// new Buffer( '// Vendor Package (compressed) - all rights reserved to the respective owners\r\n\r\n'),
// file.contents
// ]);
// }))
// either another tap (above) or header works here
.pipe(header("// Vendor Package (compressed) - all rights reserved to the respective owners\r\n\r\n"))
.pipe(gulp.dest('js'))
});
它看起来不像 gulp-header 允许您使用每个文件作为参数的函数所以我建议 gulp-tap 可以。
编辑:gulp-header 不允许函数参数但 提供对已解析文件和文件名的访问ala ${filename}
。所以我删除了第一个 tap
管道以获得更简单的 gulp-header
管道。
我缩小并连接供应商文件。最好将 vendor.min.js 中的脚本与一些信息(如原始文件名)分开。我正在使用 gulp-header 将 header 添加到我的输出文件。
// Minify vendor JS
gulp.task('minify-vendor-js', function() {
return gulp.src([
'lib/**/*.js'
])
.pipe(uglify())
.on('error', function (err) { gutil.log(gutil.colors.red('[Error]'), err.toString()); })
.pipe(header("// Vendor Package (compressed) - all rights reserved to the respective owners\r\n"))
.pipe(concat('vendor.min.js'))
.pipe(gulp.dest('js'))
});
vendor.min.js 应该看起来像这样(注意 "compressed from..." headers:
// compressed from jquery.js
!function(e,t){"object"==typeof module&&"object"==typeof module.exports?mod ...
// compressed from bootstrap.js
if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript ...
如何将当前 gulp.src 文件名放入 header 文本中?
您可以将 gulp-tap 添加到您的管道,它可以检查流中的每个文件并从中提取相关信息:
var path = require('path');
var tap = require('gulp-tap');
// Minify vendor JS
gulp.task('minify-vendor-js', function() {
return gulp.src([
'lib/**/*.js'
])
.pipe(uglify())
.on('error', function (err) { gutil.log(gutil.colors.red('[Error]'), err.toString()); })
// .pipe(tap(function (file) {
// file.contents = Buffer.concat([
// new Buffer( '// compressed from ' + path.basename(file.path) + '\r\n'),
// file.contents
// ]);
// }))
// EDIT: replaced the above tap pipe with the following
.pipe(header('// compressed from ${filename} \r\n'))
.pipe(concat('vendor.min.js'))
// .pipe(tap(function (file) {
// file.contents = Buffer.concat([
// new Buffer( '// Vendor Package (compressed) - all rights reserved to the respective owners\r\n\r\n'),
// file.contents
// ]);
// }))
// either another tap (above) or header works here
.pipe(header("// Vendor Package (compressed) - all rights reserved to the respective owners\r\n\r\n"))
.pipe(gulp.dest('js'))
});
它看起来不像 gulp-header 允许您使用每个文件作为参数的函数所以我建议 gulp-tap 可以。
编辑:gulp-header 不允许函数参数但 提供对已解析文件和文件名的访问ala ${filename}
。所以我删除了第一个 tap
管道以获得更简单的 gulp-header
管道。