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

背景

当我们使用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
    });
});

写在最后

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

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

相关推荐
Blurpath住宅代理1 小时前
AI代理配置实战指南:构建高可用、低风险的网络出口层
人工智能·ai·自动化·静态ip·动态代理·住宅ip·住宅代理
小陈的进阶之路2 小时前
Selenium 常用操作 API
python·自动化·pytest
twc8293 小时前
打造专属 MCP Server 测试自动化的私有化解决方案
运维·软件测试·人工智能·自动化·mcp server
实在智能RPA3 小时前
实在 Agent 支持哪些企业业务场景的自动化?全行业智能自动化场景深度拆解
java·运维·自动化
Xpower 173 小时前
Clawith:开启多智能体协作的新纪元
人工智能·python·语言模型·自动化
柯儿的天空3 小时前
【OpenClaw 全面解析:从零到精通】第 021 篇:Claw 家族全景——从桌面级到边缘部署的轻量级智能体变体深度解析
gpt·ai作画·自动化·aigc·ai编程·ai写作·agi
星纬智联技术17 小时前
GEO E2E 自动化验证测试文章
运维·自动化·geo
爱敲代码的菜菜18 小时前
【测试】自动化测试
css·selenium·测试工具·junit·自动化·xpath
奶茶精Gaaa19 小时前
AI实战(二)生成ui自动化
功能测试·学习·自动化
厦门辰迈智慧科技有限公司20 小时前
高边坡自动化监测要点分析
自动化·高边坡监测·边坡监测