Files
imes-cutPoint/README.md

112 lines
3.5 KiB
Markdown
Raw Permalink Normal View History

2025-07-31 17:36:08 +08:00
# @mes-processors/libs
这是一个用于处理MES制造执行系统相关工作流的处理器类库。
## 安装
在内网环境下执行以下脚本进行安装
```sh
pnpm add http://gitea.cf/MES-FE/mes-packages/releases/download/0.1/mes-processors-libs-0.1.0.tgz
```
> [!CAUTION]
> 在安装库之前,请确认以下信息:
>
> - 该库发布于内网gitea仓库的release中所以你需要提前在gitea中进行登录并确保你有该仓库的访问权限。
> - 库的版本需要手动进行控制,注意上述链接中的版本信息,在安装前需要主动修改版本号,请前往<http://gitea.cf/MES-FE/mes-packages/releases>来确认最新版本。
## 使用
该库提供了MES/iMES公用的处理器并已配置为导出项请参考以下Typescript代码进行使用
```ts
// 引入矩形优化处理器
import { RectLayoutProcConfig } from 'cut-abstractions';
import { RectLayoutProc } from '@mes-processors/libs';
// 实例化处理器
const proc = new RectLayoutProc();
// 构建上下文f proc.exec>[0] = {
input: testObj,
params: new RectLayoutProcConfig()
};
// 异步执行
const ctx: Parameters<typeo
await proc.exec(ctx);
// 从上下文对象中获取输出内容
console.log("RESULT: ", ctx.output);
```
## Q&A
### 运行某些处理器时出现404(Not Found)错误
**错误描述**
当执行处理器时,出现类似下面的错误:
```log
GET http://localhost:5173/node_modules/.vite/deps/assets/RectOptimizeMachine.worker-BO2fmpVH.js 404 (Not Found)
```
**根本原因**
该库中某些处理器使用了Web Worker来实现多线程异步处理例如矩形优化处理器
Web Worker为单独打包的资产文件但某些打包工具可能会对`node_modules`中的依赖进行预构建来提高性能如果Worker文件被视为了预构建的一部分就可能导致处理器无法正确地处理Worker文件的相对引用路径导致在运行时尝试从`node_modules/.vite/deps/assets/`这样的内部路径加载,而这个路径在实际部署或服务时是不存在的。
**解决方法**
在打包工具中对该库进行配置,禁用对该库的优化和预构建,以`vite`为例:
```ts
// vite.config.ts
...
optimizeDeps: {
exclude: ["@mes-processors/libs"] // 从optimizeDeps中排除该库
}
...
```
## 开发
### 发布并打包项目
```sh
pnpm build
pnpm pack
```
> [!NOTE]
> 发布前记得更改版本号
### 约定
**目录**
```
src
├── modules 项目模块分组
├── processors 处理器
└── utils 公用的工具类
```
**导出和打包**
- 编写的处理器请在`src/index.ts`中进行导出
- 编写的工具类请在`src/utils/index.ts`中进行导出
- 在打包时项目仅会对`src/index.ts`进行打包,工具类相关模块不会进行打包
- 关于打包相关明细请自行查看相关文件
- [package.json](package.json)
- [vite.config.ts](vite.config.ts)
> [!WARNING]
> 在该工作区中编写模块时,禁止使用绝对路径进行导入,禁止在`tsconfig.json`或`vite.config.ts`中添加"@"别名所有导入语句请使用相对路径进行引入否则会因monorepo内部导入混乱导致模块解析失败。
### 测试
项目使用[Vitest](http://vitest.dev/)作为单元测试框架若要对TS文件编写单元测试请在文件的同目录下创建`<文件名>.test.ts`文件并遵循Vitest规范编写单元测试。
要执行单元测试,请运行下面的命令:
```sh
pnpm test
```