我想用
gulp.src('./src/**/*.*')
匹配src目录里面的所有文件 , 然后判断文件后缀名 , 是css的话就压缩css , js的话就压缩js , html就压缩html , 其他文件就直接复制到其他目录 .
问题是 : 我无法判断后缀名 , 因为我不知道怎么获取匹配到了哪些文件以及它们的文件名 ..
我想用
gulp.src('./src/**/*.*')
匹配src目录里面的所有文件 , 然后判断文件后缀名 , 是css的话就压缩css , js的话就压缩js , html就压缩html , 其他文件就直接复制到其他目录 .
问题是 : 我无法判断后缀名 , 因为我不知道怎么获取匹配到了哪些文件以及它们的文件名 ..
推荐一个node插件through2
gulp中可以这样使用:
var through2 = require('through2');
// ...
gulp.src('/src/**/*.*)
.pipe(through2.obj(function (file, enc, cb) {
console.log(file.relative); // 文件路径
// 然后可以判断file的后缀,进行相应的任务
// if (extension === '.css') {
// css task
// } else if (extension === '.js') {
// js task
// }
cb();
}))
.pipe(/* other tasks*/);
这样的话可以把每个步骤拆分成多个task,然后在运行时候依次运行就好了,最好是针对一种文件(html,css,js)单独一个任务吧,也方便扩展,或者随时替换或删除task。
你这个需求应该分别作不同的任务,而不应该做在同一个任务里面,譬如:
gulp.task('js', function(){
gulp
.src('./src/**/*.js')
.pipe(uglify())
.pipe(gulp.dest('目标目录'));
});
gulp.task('css', function(){
gulp
.src('./src/**/*.js')
.pipe(minify())
.pipe(gulp.dest('目标目录'));
});
这样也更好维护啊
5 回答4.8k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
5 回答1.9k 阅读
2 回答1.3k 阅读✓ 已解决
3 回答2k 阅读
1 回答3.2k 阅读
谢谢大家 , 我已经找到答案了 , 并且写一片博文 :
gulp 怎么查看匹配到了哪些文件
http://w3cc.cc/2016/05/27/gulp-how-to-read-file-name/