上手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'