Files
n8n_Demo/web_frontend/food-order-demo/node_modules/pirates/README.md
Yep_Q c3eb7125cc feat: 创建食品订单班演示系统基础框架
详细说明:
- 基于文旅订单班框架复制创建food-order-demo项目
- 修改端口配置为4174避免冲突
- 更新LandingPage为青莳轻食主题(绿色健康风格)
- 重新定义7个食品行业专业Agent:
  * 市场研究专家:轻食市场分析、客群画像
  * 营养配方师:营养成分配比、低卡高蛋白设计
  * 供应链管理专家:有机食材供应、溯源体系
  * 品牌策划师:品牌定位、店铺空间布局
  * 财务分析师:投资预算、ROI分析
  * 运营管理专家:运营流程、品控标准
  * 食品创业导师:中央协调、方案整合
- 创建专用启动脚本start.sh
- 验证系统可正常运行在端口4174
- 实现代码复用率90%,符合预期目标

影响文件: web_frontend/food-order-demo/
技术栈: React 18 + TypeScript + Tailwind CSS + Zustand
2025-09-28 10:32:44 +08:00

2.9 KiB

Pirates Coverage

Properly hijack require

This library allows to add custom require hooks, which do not interfere with other require hooks.

This library only works with commonJS.

Why?

Two reasons:

  1. Babel and istanbul were breaking each other.
  2. Everyone seemed to re-invent the wheel on this, and everyone wanted a solution that was DRY, simple, easy to use, and made everything Just Work™, while allowing multiple require hooks, in a fashion similar to calling super.

For some context, see the Babel issue thread which started this all, then the nyc issue thread, where discussion was moved (as we began to discuss just using the code nyc had developed), and finally to #1 where discussion was finally moved.

Installation

npm install --save pirates

Usage

Using pirates is really easy:

// my-module/register.js
const addHook = require('pirates').addHook;
// Or if you use ES modules
// import { addHook } from 'pirates';

function matcher(filename) {
  // Here, you can inspect the filename to determine if it should be hooked or
  // not. Just return a truthy/falsey. Files in node_modules are automatically ignored,
  // unless otherwise specified in options (see below).

  // TODO: Implement your logic here
  return true;
}

const revert = addHook(
  (code, filename) => code.replace('@@foo', 'console.log(\'foo\');'),
  { exts: ['.js'], matcher }
);

// And later, if you want to un-hook require, you can just do:
revert();

API

pirates.addHook(hook, [opts={ [matcher: true], [exts: ['.js']], [ignoreNodeModules: true] }]);

Add a require hook. hook must be a function that takes (code, filename), and returns the modified code. opts is an optional options object. Available options are: matcher, which is a function that accepts a filename, and returns a truthy value if the file should be hooked (defaults to a function that always returns true), falsey if otherwise; exts, which is an array of extensions to hook, they should begin with . (defaults to ['.js']); ignoreNodeModules, if true, any file in a node_modules folder wont be hooked (the matcher also wont be called), if false, then the matcher will be called for any files in node_modules (defaults to true).

Projects that use Pirates

See the wiki page. If you add Pirates to your project, (And you should! It works best if everyone uses it. Then we can have a happy world full of happy require hooks!), please add yourself to the wiki.