gulp入门教程5:node-glob

node-glob模块简介

node-glob是一个基于Node.js的文件匹配库,它允许用户使用类似于shell的通配符(如***)来匹配文件路径。这个库基于JavaScript,使用了minimatch库来进行匹配。node-glob在处理大型项目中的文件匹配任务时非常有用,例如配置Webpack的入口文件或gulp中的文件处理。

node-glob模块在gulp中的应用

在gulp中,node-glob模块主要用于gulp.src()方法中,以确定哪些文件需要被操作。gulp.src()方法接受一个glob字符串或由多个glob字符串组成的数组作为参数,用于匹配文件路径。匹配到的文件会被读取到内存中,并生成一个Node流(stream),以便后续处理。

node-glob匹配规则

node-glob模块支持多种匹配规则,以下是一些常用的匹配规则:

  • *:匹配文件路径中的0个或多个字符,但不会匹配路径分隔符(除非路径分隔符出现在末尾)。
  • **:匹配路径中的0个或多个目录及其子目录。需要单独出现,即它左右不能有其他字符。如果出现在末尾,也能匹配文件。
  • ?:匹配文件路径中的一个字符(不会匹配路径分隔符)。
  • [...]:匹配方括号中出现的字符中的任意一个。当方括号中第一个字符为^!时,表示不匹配方括号中出现的其他字符中的任意一个。
  • !(pattern|pattern|pattern):匹配任何与括号中给定的任一模式都不匹配的文件。
  • ?(pattern|pattern|pattern):匹配括号中给定的任一模式0次或1次。
  • +(pattern|pattern|pattern):匹配括号中给定的任一模式至少1次。
  • *(pattern|pattern|pattern):匹配括号中给定的任一模式0次或多次。
  • @(pattern|pattern|pattern):匹配括号中给定的任一模式1次。

使用node-glob模块的注意事项

  • 当使用glob数组时,会按照每个glob在数组中的位置依次执行匹配。这对于取反(negative)glob特别有用,因为取反glob必须跟在一个非取反(non-negative)glob后面才能生效。
  • 在glob中,分隔符永远是/字符,不区分操作系统。即使在采用\作为分隔符的Windows操作系统中,也应使用/作为分隔符。
  • \字符在glob中被保留作为转义字符使用。如果需要将通配符(如*)作为普通字符处理,可以使用\进行转义。
  • 避免使用Node的path类方法来创建glob,因为path.join等方法在Windows中会使用\作为路径分隔符,从而产生无效的glob。

示例

以下是一个使用node-glob模块在gulp中匹配文件的示例:

var gulp = require('gulp');

// 匹配js文件夹下所有.js格式的文件
gulp.src('./js/*.js')
    .pipe(gulp.dest('./dist/'));

// 匹配js文件夹的0个或多个子文件夹中的.js文件
gulp.src('./js/**/*.js')
    .pipe(gulp.dest('./dist/'));

// 匹配除了index.js之外的所有js文件
gulp.src(['./js/*.js', '!./js/index.js'])
    .pipe(gulp.dest('./dist/'));

// 使用数组匹配多种文件类型
gulp.src(['./js/*.js', './css/*.css', './*.html'])
    .pipe(gulp.dest('./dist/'));

通过以上介绍,您应该对node-glob模块在gulp中的应用有了更深入的了解。这个模块为gulp提供了强大的文件匹配功能,使得文件处理变得更加灵活和高效。

猜你喜欢

转载自blog.csdn.net/gusushantang/article/details/143466553