上手gulp - 同步目录结构说明

  • 作者:KK

  • 发表日期:2016.6.23


细心的朋友应该会发现 监听文件系统 示例的gulp.src(event.path, {base : './src'})这个代码中多了{base : './src'}这个参数

可是之前在 压缩JS 里将JS文件部署到dist的时候是使用pipe(gulp.dest('./dist'))的,为什么这回要加上第2个参数呢?

原因是在执行gulp.src('./src/**/**.js')的时候,系统就自动截取了*号前面的目录作为base目录了,所以前面的会自动有base

压缩JS 能在dist目录为我们自动生成与src下一模一样目录结构的文件,那是因为它将./src/**/**.js里的./src取出来作为base后

留下的部分就是修改文件目录,比如./src/assets/common/navi.js被修改,那么相对于程序,gulp认为JS文件是assets/common/navi.js,于是部署到dist目录自然也成了./dist/assets/common/navi.js,从而实现同步目录结构

本节中使用的gulp.src(event.path)这个event.path就是一个完整的文件路径,不带*号什么的,所以更说不上自动识别base了,此时需要声明base才可以


再引述一下中文官网的解释:

请想像一下在一个路径为client/js/somedir的目录中,有一个文件叫somefile.js

gulp.src('client/js/**/*.js') // 匹配 'client/js/somedir/somefile.js' 并且将 `base` 解析为`client/js/`
	.pipe(minify())
	.pipe(gulp.dest('build'));  // 写入 'build/somedir/somefile.js'

gulp.src('client/js/**/*.js', { base: 'client' })
	.pipe(minify())
	.pipe(gulp.dest('build'));  // 写入 'build/js/somedir/somefile.js'