nest-boot-temporary-directory
Installation
SKILL.md
概览
@nest-boot/temporary-directory 为每个 RequestContext 创建一个位于系统临时目录下的隔离根目录。TemporaryDirectoryService.create() 返回该根目录中的随机子目录;上下文成功或失败结束时,模块递归清理整个根目录。
核心原则
- 在应用组合根导入静态全局模块。
TemporaryDirectoryModule没有register()或registerAsync();通过 Nestimports注册一次,不要把 Module 当 provider,也不要在业务项目复制一套本地临时目录服务。 - 只在活动且已初始化的
RequestContext中调用create()。 HTTP/GraphQL 请求可以使用框架建立的上下文;队列、定时任务、CLI 或自定义入口必须确认入口已建立上下文,并让完整临时文件工作留在该上下文的 awaited callback 内。 - 在可靠的上下文边界解析路径。 Multer、Busboy、事件监听器或第三方流式回调可能晚于拦截器入口执行,也可能看不到原有异步上下文。应先在 Controller/Interceptor/Processor 等已知边界
await create(),后续回调只捕获返回的字符串路径;不要在回调里再次读取RequestContext。 - 不要跨上下文保留临时路径。 必须等待所有读写、上传、解压或转换完成,并在上下文结束前把需要保留的结果复制到持久存储。不要把路径写入数据库、发送给后续任务或交给 detached promise。
- 让请求上下文拥有清理责任。 业务成功、异常和解析失败都由模块在上下文结束时统一清理。业务代码不要对 package-owned 目录重复
rm;测试中的假目录由创建该 fixture 的测试负责清理。 - 每次调用返回独立目录。 需要按用途分组时传入可选 namespace;它只能是 1–64 个 ASCII 字母、数字、连字符或下划线,不能是路径、空字符串、点段或任意业务输入。