一些引入依赖,提示引入方式报错的问题

背景

当我们使用gulp自动化处理文件的时候,难免会遇到需要按照一定条件过滤的需求,这里博主所遇到问题是,通过文件内容中是否包含 某一串字符串 决定过滤当前的文件

比如:

碰到文件中包含注释 * @replace-note 此文件未被引用 ,那么,gulp任务就忽略该文件,继续处理下一个文件。

typescript 复制代码
/**
 * @replace-note 此文件未被引用
 */

庆幸的是,已经有前辈创造了 gulp-filter这种插件,专门用来处理自动化过程当中,碰到需要过滤某些文件时的良药

依赖

  • gulp-filter // 最新版本

引入方式

  1. 之前的版本 require('gulp-filter')的方式

    报错:
    Error [ERR_REQUIRE_ESM]: require() of ES Module xxx/node_modules/gulp-filter/index.js from xxx/gulpfile.js not supported. Instead change the require of index.js in xxx/gulpfile.js to a dynamic import() which is available in all CommonJS modules. at Object.<anonymous> (xxx/gulpfile.js:12:16) at async Promise.all (index 0) { code: 'ERR_REQUIRE_ESM' }

  2. 这里报错提示我们采用动态 import()方式引入,异步获取依赖的内容

typescript 复制代码
import("gulp-filter").then(module => {
 // module.default
});

使用

过滤的方式有很多种gulp-filter可以深度去学习各种各样的用法,可以解决我们所想要的过滤功能;

一些普通的用法,大家看这里有案例

下面这种属于自定义过滤方式,当然也就会五花八门啦,主要是提供一个回调函数,该函数由使用者自己去实现什么情况下,需要过滤掉某些文件

typescript 复制代码
const gulp = require("gulp");
const replace = require("gulp-replace");
const XLSX = require("xlsx");

// 动态引入 gulp-filter
const dynamicImport = () => {
  return new Promise(resolve => {
    import("gulp-filter").then(module => {
      resolve(module.default);
    });
  });
};

// 过滤存在此注释的文件
const filter_file_mark = "* @replace-note 此文件未被引用";

gulp.task("search-replace", async () => {
  const keyMap = getKeywordMap();
  const filter = await dynamicImport();
  let filterRule = filter(function (file) {
    // 过滤存在此注释的文件
    return !file.contents.toString().includes(filter_file_mark);
  });

  return gulp
    .src(["./src/**/*.js", "./src/**/*.jsx"])
    .pipe(filterRule)
    ...其他的一些处理
    .on("end", function () {
      // xxx
    });
});

写在最后

挺感谢前辈们创造的一个又一个的工具,给我们开发中带来了各种各样的便利,大佬们已经提供了各种各样的工具,只不过怎么正确使用,是我们工作中需要思考的事情,合理使用让我们的工作事半功倍。

话不多说,觉得博主帮到了大家,记得点个赞 再走呗,抱拳🙏!!!

相关推荐
浪小满3 小时前
linux下使用脚本实现对进程的内存占用自动化监测
linux·运维·自动化·内存占用情况监测
Allen Bright4 小时前
使用 JMeter 的 Autostop Listener 插件:自动化性能测试的守护者
运维·jmeter·自动化
hhzz4 小时前
ansible自动化运维实战--复制模块和用户模块(3)
运维·自动化·ansible
hhzz4 小时前
ansible自动化运维实战--Inventory主机清单(2)
运维·自动化·ansible
Damon小智6 小时前
合合信息DocFlow产品解析与体验:人人可搭建的AI自动化单据处理工作流
图像处理·人工智能·深度学习·机器学习·ai·自动化·docflow
张某人想退休8 小时前
自动化实现的思路变化
运维·自动化
Shootingmemory15 小时前
自动化01
运维·自动化
贾贾202321 小时前
配电自动化中的进线监控技术
大数据·运维·网络·自动化·能源·制造·信息与通信
_可乐无糖1 天前
Appium 检查安装的驱动
android·ui·ios·appium·自动化
游客5201 天前
自动化办公|使用Python重命名并移动文件到对应文件夹
python·自动化