{"_id":"@bestfulfill-inc/apifox-to-typescript","_rev":"4-64055f426fc817a19552b540948d7810","name":"@bestfulfill-inc/apifox-to-typescript","dist-tags":{"latest":"0.2.8"},"versions":{"0.2.5":{"name":"@bestfulfill-inc/apifox-to-typescript","version":"0.2.5","author":{"name":"jiangyao"},"license":"MIT","_id":"@bestfulfill-inc/apifox-to-typescript@0.2.5","maintainers":[{"name":"sandwich_luck","email":"452949626@qq.com"}],"bin":{"apifox":"bin/apifox.js"},"dist":{"shasum":"d85444266f900403c2944a68b999c2a9e622e487","tarball":"https://registry.npmjs.org/@bestfulfill-inc/apifox-to-typescript/-/apifox-to-typescript-0.2.5.tgz","fileCount":11,"integrity":"sha512-jqXtQdGJE9jt2FksmW6kM7Gom62dvPGbOUS5nfIF7HitMmiQ+ADPs6hI0vEC3zX1bVPPKstnvXCLAmtyGJ2LhQ==","signatures":[{"sig":"MEQCIQDw+gLxbKHSsqx21jRLGZmpMZzNXOW04E7jSIn9Lvq/hQIfOYB3Iwe1eRq4/A5YseozaRqevQTHttQyL0XuFt3iKQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61794},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"7fabd434c878a1b2510c4aed718568a3850b9de5","scripts":{"test":"node --test","check":"biome check .","format":"biome check --write .","prepare":"husky"},"_npmUser":{"name":"sandwich_luck","email":"452949626@qq.com"},"_npmVersion":"11.9.0","description":"Apifox multi-project API generator CLI based on openapi-ts-request.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"jiti":"^2.4.2","openapi-ts-request":"^1.12.8"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.34.4","devDependencies":{"husky":"^9.1.7","@biomejs/biome":"^2.5.8"},"_npmOperationalInternal":{"tmp":"tmp/apifox-to-typescript_0.2.5_1788942748331_0.40936447894020533","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@bestfulfill-inc/apifox-to-typescript","version":"0.2.6","author":{"name":"jiangyao"},"license":"MIT","_id":"@bestfulfill-inc/apifox-to-typescript@0.2.6","maintainers":[{"name":"sandwich_luck","email":"452949626@qq.com"}],"bin":{"apifox":"bin/apifox.js"},"dist":{"shasum":"33a8cbe7b42134e0aea7112fb07925714d0591d9","tarball":"https://registry.npmjs.org/@bestfulfill-inc/apifox-to-typescript/-/apifox-to-typescript-0.2.6.tgz","fileCount":11,"integrity":"sha512-Wmp/FoZ9tcvwVUut6cLF9uR+iN/Iulwqmp1GSbRbXMHY905hnO7c+eniCrN6qBZzD7iaPVnTq4roY1XEKFNFcA==","signatures":[{"sig":"MEQCIBYy5xBP5+JqY55loljnYhkqqUaKPoWKzcv497NJRjzPAiBiX2nl2j+HPf/013YfKDQ3xdImMFuuj9Jxb/hIo3/2zw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60922},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"a82bbc791a84e799f946277ed010491e88095297","scripts":{"test":"node --test","check":"biome check .","format":"biome check --write .","prepare":"husky"},"_npmUser":{"name":"sandwich_luck","email":"452949626@qq.com"},"_npmVersion":"11.9.0","description":"Apifox multi-project API generator CLI based on openapi-ts-request.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"jiti":"^2.4.2","openapi-ts-request":"^1.12.8"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.34.4","devDependencies":{"husky":"^9.1.7","@biomejs/biome":"^2.5.8"},"_npmOperationalInternal":{"tmp":"tmp/apifox-to-typescript_0.2.6_1788947737393_0.7032079789014212","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@bestfulfill-inc/apifox-to-typescript","version":"0.2.7","author":{"name":"jiangyao"},"license":"MIT","_id":"@bestfulfill-inc/apifox-to-typescript@0.2.7","maintainers":[{"name":"sandwich_luck","email":"452949626@qq.com"}],"bin":{"apifox":"bin/apifox.js"},"dist":{"shasum":"595e7da13a56e2911d7d694b2ac82026c172fa0a","tarball":"https://registry.npmjs.org/@bestfulfill-inc/apifox-to-typescript/-/apifox-to-typescript-0.2.7.tgz","fileCount":11,"integrity":"sha512-ZsHtsYtpT8fkXHZxKffSD9Lhyo0ZdHMHpd+BhtOOKz7MX3dcSHJGZT6ZgY+WsJ8wEfXzuDIGX5R5sEPqqDb7bQ==","signatures":[{"sig":"MEQCIF7mA/ZL2oQbpq01nshUid5+xRseZdWn8D3aNgbVRm3IAiBT1coN8RDGKDt9r5GuAGYa6k6W7lzFcN8FqvtV+lCPKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64991},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"c0a875fc500651a500d88427485ec4dcd0fab960","scripts":{"test":"node --test","check":"biome check .","format":"biome check --write .","prepare":"husky"},"_npmUser":{"name":"sandwich_luck","email":"452949626@qq.com"},"_npmVersion":"11.9.0","description":"Apifox multi-project API generator CLI based on openapi-ts-request.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{"jiti":"^2.4.2","openapi-ts-request":"^1.12.8"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.34.4","devDependencies":{"husky":"^9.1.7","@biomejs/biome":"^2.5.8"},"_npmOperationalInternal":{"tmp":"tmp/apifox-to-typescript_0.2.7_1788955958883_0.8836928774606494","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@bestfulfill-inc/apifox-to-typescript","version":"0.2.8","description":"Apifox multi-project API generator CLI based on openapi-ts-request.","author":{"name":"jiangyao"},"type":"module","sideEffects":false,"bin":{"apifox":"bin/apifox.js"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"check":"biome check .","format":"biome check --write .","prepare":"husky","test":"node --test"},"dependencies":{"jiti":"^2.4.2","openapi-ts-request":"^1.12.8"},"engines":{"node":">=18"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"license":"MIT","devDependencies":{"@biomejs/biome":"^2.5.8","husky":"^9.1.7"},"packageManager":"pnpm@10.34.4","gitHead":"08d62b4171aee67f457197c08db49de2256e4f39","_id":"@bestfulfill-inc/apifox-to-typescript@0.2.8","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-gEJEPkxY6RU649GqRRiQWm2HfosSvrnWh2FlThTbRllu2tjOglZaFZzcOpE/tPOrtB8w2jPxZCfK4pk07SGIDQ==","shasum":"81366165f722beed762e6411fadf7ebb75bbee28","tarball":"https://registry.npmjs.org/@bestfulfill-inc/apifox-to-typescript/-/apifox-to-typescript-0.2.8.tgz","fileCount":11,"unpackedSize":65912,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGF1vPhHeWz7pDRLnZWcE/F6S0DXqWvsonKDo1nSwn6CAiBtTb95yTm5T9gqqDKmudW4CG3gRKJFjQ7hX6R0MSAr+g=="}]},"_npmUser":{"name":"sandwich_luck","email":"452949626@qq.com"},"directories":{},"maintainers":[{"name":"sandwich_luck","email":"452949626@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/apifox-to-typescript_0.2.8_1789042192227_0.5060205053550366"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-09T08:32:28.194Z","modified":"2026-09-10T12:09:53.043Z","0.2.5":"2026-09-09T08:32:28.449Z","0.2.6":"2026-09-09T09:55:37.524Z","0.2.7":"2026-09-09T12:12:39.010Z","0.2.8":"2026-09-10T12:09:52.396Z"},"author":{"name":"jiangyao"},"license":"MIT","description":"Apifox multi-project API generator CLI based on openapi-ts-request.","maintainers":[{"name":"sandwich_luck","email":"452949626@qq.com"}],"readme":"# @bestfulfill-inc/apifox-to-typescript\n\n## 安装\n\n```bash\npnpm add -D @bestfulfill-inc/apifox-to-typescript\n```\n\n## 初始化配置\n\n```bash\npnpm apifox init\n```\n\n该命令会创建 `apifox.config.ts`：\n\n```ts\nimport { defineConfig } from '@bestfulfill-inc/apifox-to-typescript';\n\nexport default defineConfig({\n  apifoxToken: '',\n  requestImport: \"import { request } from '@/services/request'\",\n  outputBaseDir: 'src/services',\n  projects: []\n});\n```\n\n每个项目生成的文件会合并到同一个目录中：\n\n```txt\nsrc/services/\n  projectId_<projectId>/\n    request.ts\n    types.ts\n    mock.ts\n    index.ts\n```\n\n## 生成 API\n\n全量生成\n\n```bash\npnpm apifox update\n```\n\n增量生成\n\n```bash\npnpm apifox --p xx [--name <name>]\npnpm apifox --p xx --f xx [--name <name>]\n```\n\n`--projectId` / `--folderId` 仍兼容，但推荐用更短的 `--p` / `--f`。\n\n导出原始文档（不生成 TypeScript，二选一）：\n\n```bash\npnpm apifox --p xx --json\npnpm apifox --p xx --yaml\n```\n\n文档会写入项目输出目录，分别生成 `openapi.json` 或 `openapi.yaml`。\n\n## 其他配置\n\n\n| 字段                     | 类型                      | 必填  | 说明                                                                                      |\n| ---------------------- | ----------------------- | --- | --------------------------------------------------------------------------------------- |\n| `apifoxToken`          | `string`                | 否   | 共享的 Apifox API token；未配置时读取环境变量 `APIFOX_ACCESS_TOKEN`                         |\n| `requestImport`        | `string`                | 否   | 默认为 `import { request } from '@/services/request'`；支持完整 `import` 语句，也支持模块路径，生成时会提取本地请求名 |\n| `outputBaseDir`        | `string`                | 否   | 默认为 `src/services`；生成项目目录的基础目录                                                          |\n| `projects`             | `ApifoxProjectConfig[]` | 否   | 项目生成列表；全量生成时为必填，仅使用 `--p` 增量生成时可为空                                                      |\n| `project.name`         | `string`                | 否   | 本地项目标识，用于生成的输出目录名；默认值为 `projectId_<id>`                                                 |\n| `project.projectId`    | `string`                | 是   | Apifox 项目 ID                                                                            |\n| `selectedFolderIds`    | `number[]`              | 否   | 导出时包含的 Apifox 接口分类/目录 ID。为空或省略时表示导出全部                                                   |\n| `isSplitTypesByFolder` | `boolean`               | 否   | 是否按 `selectedFolderIds` 自动拆分为 `folderId_<id>` 子目录，默认 `false`                            |\n| `hook`                 | `ApifoxHookConfig`      | 否   | 支持函数名、类型名和请求调用表达式的定制                                                                    |\n\n\n除 `apifoxToken` 外，顶层配置都可以放到项目级配置里覆盖。\n\n## Hook 扩展\n\n`hook` 支持配置在顶层作为所有项目的默认值，也支持项目级覆盖。\n\n```ts\nimport { defineConfig } from '@bestfulfill-inc/apifox-to-typescript';\n\nexport default defineConfig({\n  apifoxToken: '',\n  requestImport: \"import { request } from '@/services/request'\",\n  outputBaseDir: 'src/services',\n  hook: {\n    customFunctionName(data, prefix) {\n      return `${prefix ?? ''}${data.operationId ?? 'request'}`;\n    },\n    customTypeName(data) {\n      return `${data.operationId ?? 'Request'}Result`;\n    },\n    customRequest({ method, url, params, responseType }, requestName) {\n      return `${requestName}.${method}${responseType}(${url}${params ? `, ${params}` : ''})`;\n    }\n  },\n  projects: []\n});\n```\n","readmeFilename":"README.md"}