gulp.src

输出(Emits)符合所提供的匹配模式(glob)或者匹配模式的数组(array of globs)的文件。 将返回一个 Vinyl filesstream 它可以被 piped 到别的插件中。

用法

gulp.src(globs[, options])
gulp.src('client/templates/*.jade')
  .pipe(jade())
  .pipe(minify())
  .pipe(gulp.dest('build/minified_templates'));

参数

globs

描述:所要读取的 glob 或者包含 globs 的数组。

类型: String 或 Array

glob 请参考 node-glob 语法 或者,你也可以直接写文件的路径。

options

描述:通过 glob-stream 所传递给 node-glob 的参数。

类型: Object

除了 node-globglob-stream 所支持的参数外,gulp 增加了一些额外的选项参数:

options.buffer

描述:是否返回buffer,或者说是返回buffer(true)还是返回file_contents(false)。

类型: Boolean

默认值: true

如果该项被设置为 false,那么将会以 stream 方式返回 file.contents 而不是文件 buffer 的形式。这在处理一些大文件的时候将会很有用。注意:插件可能并不会实现对 stream 的支持。

options.read

描述:是否去读取文件的内容。

类型: Boolean

默认值: true

如果该项被设置为 false, 那么 file.contents 会返回空值(null),也就是并不会去读取文件。

options.base

描述:重新指定src的base,不好理解,具体看下面的解释。

类型: String

默认值: 将会加在 glob 之前 (请看 glob2base)

请想像一下在一个路径为 client/js/somedir 的目录中,有两个文件:1.js,2.js ,现在我们这样:

gulp.src('client/js/**/*.js')

上面匹配的结果是什么呢?会得到两个文件的路径和内容,路径是client/js/somedir/1.jsclient/js/somedir/2.js,但对于gulp而言,这个时候的base是clien/js/,也就是glob开始匹配之前的字符串。

如果不规定options.base,那么在后面的pipe中,就会以options.base='client/js/'进行处理,比如我们在末尾执行.pipe(gulp.dest('dist/name/')),那么会得到两个文件:dist/name/somedir/1.jsdist/name/somedir/2.js

但是有的时候我们想要的是dist/name/js/somedir/1.js,而不是上面的文件路径。这个时候options.base就可以派上用场。

gulp.src('client/js/**/*.js',{
    base: 'client'
})
.pipe(gulp.dest('dist/name'))

这样就可以得到想要的结果。

它这里面就有一个相对路径的感觉,比如它找到了client/js/somedir/1.js,但是你设置了base字段为client,所以它就会把client这个目录层级从client/js/somedir/1.js中移除,剩下的部分就是js/somedir/1.js,把这个部分放到dest规定的目录中去。

这就是gulp.src,赶紧动手去自己试试吧。

results matching ""

    No results matching ""