112 lines
3.5 KiB
Markdown
112 lines
3.5 KiB
Markdown
|
# @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
|
|||
|
```
|