{"_id":"@badai147/dbsqlfmt","_rev":"4-e150ba4be2f254a33b0993e572877797","name":"@badai147/dbsqlfmt","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.1":{"name":"@badai147/dbsqlfmt","version":"0.1.1","keywords":["sql","formatter","cli"],"author":{"name":"badai147"},"license":"MIT","_id":"@badai147/dbsqlfmt@0.1.1","maintainers":[{"name":"badai147","email":"badai147@163.com"}],"homepage":"https://github.com/badai147/dbsqlfmt#readme","bugs":{"url":"https://github.com/badai147/dbsqlfmt/issues"},"bin":{"dbsqlfmt":"dist/cli.js"},"dist":{"shasum":"9a937b12880c44eed80ad68b48af10a7feebc2c6","tarball":"https://registry.npmjs.org/@badai147/dbsqlfmt/-/dbsqlfmt-0.1.1.tgz","fileCount":13,"integrity":"sha512-R9lCvJaXhDxQyzsiAkh0omAt4c0sCrLIQnxSaPUkHO2vPABe5yNUvDxYuDN90AT3u4bSz5u5X1vPkw37GlAAxg==","signatures":[{"sig":"MEUCIEfG3/saPxFCKyUXgVplLJC4WDj207+38PBcct4KTuvOAiEAqh/hPrAZ/poMC+aPETFeemCXuKrh6iAU37DYxfTN5Tw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10007},"type":"commonjs","engines":{"node":">=18"},"gitHead":"e6cd62d841a41c5fcd55bb8bbf3dd49b2b12c972","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"badai147","email":"badai147@163.com"},"repository":{"url":"git+https://github.com/badai147/dbsqlfmt.git","type":"git"},"_npmVersion":"11.12.1","description":"SQL formatter CLI tool","directories":{},"_nodeVersion":"24.15.0","dependencies":{"commander":"^13.1.0","sql-formatter":"^15.4.7"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dbsqlfmt_0.1.1_1782216808393_0.2135201157457356","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@badai147/dbsqlfmt","version":"0.1.2","keywords":["sql","formatter","cli"],"author":{"name":"badai147"},"license":"MIT","_id":"@badai147/dbsqlfmt@0.1.2","maintainers":[{"name":"badai147","email":"badai147@163.com"}],"homepage":"https://github.com/badai147/dbsqlfmt#readme","bugs":{"url":"https://github.com/badai147/dbsqlfmt/issues"},"bin":{"dbsqlfmt":"dist/cli.js"},"dist":{"shasum":"0378c01855781678737db1abc9035b0960298e10","tarball":"https://registry.npmjs.org/@badai147/dbsqlfmt/-/dbsqlfmt-0.1.2.tgz","fileCount":19,"integrity":"sha512-vMaj9XQFjTYGI7lKLhs2zIM+PnAZHHeNXWOp+vOwIWV1DU6//s4Ln3nSS5Vz5D5Zg3hVPzJf62NpkejPvKDj7A==","signatures":[{"sig":"MEUCIQDxJPJCypBBCXQZmjCwmRzgG7KT+rlhVKI8G2RLAviu0AIgM1S+cKWOe2a1XyIeuMCUJBLZm+kXk8DouoYXmaJwo6I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29525},"type":"commonjs","engines":{"node":">=18"},"gitHead":"936fc01da4e799585f58a499b31fe84fbaac1178","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"badai147","email":"badai147@163.com"},"repository":{"url":"git+https://github.com/badai147/dbsqlfmt.git","type":"git"},"_npmVersion":"11.12.1","description":"SQL formatter CLI tool","directories":{},"_nodeVersion":"24.15.0","dependencies":{"commander":"^13.1.0","sql-formatter":"^15.4.7"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dbsqlfmt_0.1.2_1782218147315_0.5582109897380088","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@badai147/dbsqlfmt","version":"0.1.3","keywords":["sql","formatter","cli"],"author":{"name":"badai147"},"license":"MIT","_id":"@badai147/dbsqlfmt@0.1.3","maintainers":[{"name":"badai147","email":"badai147@163.com"}],"homepage":"https://github.com/badai147/dbsqlfmt#readme","bugs":{"url":"https://github.com/badai147/dbsqlfmt/issues"},"bin":{"dbsqlfmt":"dist/cli.js"},"dist":{"shasum":"b5077dbd895abe9c22da0d0cc89ed980df399f1b","tarball":"https://registry.npmjs.org/@badai147/dbsqlfmt/-/dbsqlfmt-0.1.3.tgz","fileCount":25,"integrity":"sha512-1w8DG1vJqGpFzYiQEU0vxxUo/4IcLMyuv/oqExpcOoW1AE/IXJmlVfJNCv858MNg9NACWxgyZ0qQhRaJDjdRkQ==","signatures":[{"sig":"MEUCIQDHfWDMjG+YkKwEbomiz8dhLNyKR3i4tPHtdYcetRtH7wIgbD9Z+gFT2PwNWqMk3ekzV89jlLJETLoHAoDXwsd4xZo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45459},"type":"commonjs","engines":{"node":">=18"},"gitHead":"fff3de127126f60acf0d21f697736422ffb9932d","scripts":{"test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"badai147","email":"badai147@163.com"},"repository":{"url":"git+https://github.com/badai147/dbsqlfmt.git","type":"git"},"_npmVersion":"10.8.2","description":"SQL formatter CLI tool","directories":{},"_nodeVersion":"20.20.2","dependencies":{"commander":"^13.1.0","sql-formatter":"^15.4.7"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/dbsqlfmt_0.1.3_1782314421289_0.4136527376461565","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@badai147/dbsqlfmt","version":"0.1.4","description":"SQL formatter CLI tool","bin":{"dbsqlfmt":"dist/cli.js"},"scripts":{"build":"tsc","prepublishOnly":"npm run build","test":"vitest run","test:watch":"vitest"},"keywords":["sql","formatter","cli"],"author":{"name":"badai147"},"license":"MIT","type":"commonjs","repository":{"type":"git","url":"git+https://github.com/badai147/dbsqlfmt.git"},"bugs":{"url":"https://github.com/badai147/dbsqlfmt/issues"},"homepage":"https://github.com/badai147/dbsqlfmt#readme","engines":{"node":">=18"},"dependencies":{"commander":"^13.1.0","sql-formatter":"^15.4.7"},"devDependencies":{"@types/node":"^26.0.0","typescript":"^6.0.3","vitest":"^4.1.9"},"_id":"@badai147/dbsqlfmt@0.1.4","gitHead":"20c361bdfc2ea5d9b65c1c6d2dd39bc38072d473","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-Oz/FQaEoaDY72GIKFLONWPowmj5YhzPTw3i5noW2e6pS2vDRqgslrT39oqAsXoUVUAfnUCnWTTAT/ZaVBzAjcg==","shasum":"44251cf4a57995fcf3d5878687f06c851caf8701","tarball":"https://registry.npmjs.org/@badai147/dbsqlfmt/-/dbsqlfmt-0.1.4.tgz","fileCount":25,"unpackedSize":50411,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDUFZvoF0EQ0M/JFxIR+UC/H/VdDGrF4/70SupJmYS4WQIgPEI6njbi1xB14Q/CLiDy7ofM51EB07B/h9weB+TLPNQ="}]},"_npmUser":{"name":"badai147","email":"badai147@163.com"},"directories":{},"maintainers":[{"name":"badai147","email":"badai147@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dbsqlfmt_0.1.4_1782914945986_0.9454651567582208"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-23T12:13:28.240Z","modified":"2026-07-01T14:09:06.225Z","0.1.1":"2026-06-23T12:13:28.538Z","0.1.2":"2026-06-23T12:35:47.456Z","0.1.3":"2026-06-24T15:20:21.414Z","0.1.4":"2026-07-01T14:09:06.127Z"},"bugs":{"url":"https://github.com/badai147/dbsqlfmt/issues"},"author":{"name":"badai147"},"license":"MIT","homepage":"https://github.com/badai147/dbsqlfmt#readme","keywords":["sql","formatter","cli"],"repository":{"type":"git","url":"git+https://github.com/badai147/dbsqlfmt.git"},"description":"SQL formatter CLI tool","maintainers":[{"name":"badai147","email":"badai147@163.com"}],"readme":"# dbsqlfmt\n\n![Version](https://img.shields.io/badge/version-0.1.4-blue)\n![Node](https://img.shields.io/badge/node-%3E%3D18-brightgreen)\n![TypeScript](https://img.shields.io/badge/TypeScript-6.x-blue)\n![License](https://img.shields.io/badge/license-MIT-blue.svg)\n\n**dbsqlfmt** 是一个基于 [sql-formatter](https://github.com/sql-formatter-org/sql-formatter) 的 SQL 格式化 CLI 工具，支持 MySQL、PostgreSQL 两种方言，**自动识别方言**，支持配置文件、关键字/数据类型/函数名/标识符大小写控制等特性。\n\n## 目录\n\n- [特性](#特性)\n- [安装](#安装)\n- [使用](#使用)\n- [选项](#选项)\n- [配置文件](#配置文件)\n- [支持的方言](#支持的方言)\n- [开发](#开发)\n- [许可证](#许可证)\n\n## 特性\n\n- 格式化单个 SQL 文件（不限制文件后缀）\n- 支持 MySQL 和 PostgreSQL 两种方言\n- **自动识别 SQL 方言**，无需手动指定\n- 可自定义缩进大小\n- **全面的关键字/数据类型/函数名/标识符大小写控制**（大写、小写、保持原样）\n- Dry-run 预览模式，不改写文件\n- 通过 `.dbsqlfmtrc` 配置文件持久化选项\n\n## 安装\n\n```bash\nnpm i @badai147/dbsqlfmt\n```\n\n本地开发用 `npm link`：\n\n```bash\nnpm link\n```\n\n## 使用\n\n```bash\ndbsqlfmt format <file> [options]\n```\n\n### 示例\n\n**基础格式化：**\n\n```bash\ndbsqlfmt format query.sql\n```\n\n**指定方言：**\n\n```bash\ndbsqlfmt format query.sql --language postgresql\n```\n\n**关键字小写 + 数据类型保持原样：**\n\n```bash\ndbsqlfmt format query.sql --keyword-case lower --data-type-case preserve\n```\n\n**仅预览结果，不写回文件：**\n\n```bash\ndbsqlfmt format query.sql --dry-run\n```\n\n**DBeaver 外部工具配置：**\n\n```bash\ndbsqlfmt format \"${file}\" --dry-run\n```\n\n## 选项\n\n| 选项 | 描述 | 默认值 |\n|------|------|--------|\n| `-l, --language <lang>` | SQL 方言（`mysql` / `postgresql`，不指定则自动识别） | 自动检测 |\n| `-i, --indent <size>` | 缩进空格数 | `2` |\n| `-u, --uppercase` | `--keyword-case upper` 的快捷方式 | 关闭 |\n| `--keyword-case <style>` | 关键字大小写：`upper` / `lower` / `preserve` | `upper` |\n| `--data-type-case <style>` | 数据类型大小写：`upper` / `lower` / `preserve` | `upper` |\n| `--function-case <style>` | 函数名大小写：`upper` / `lower` / `preserve` | `upper` |\n| `--identifier-case <style>` | 标识符大小写：`upper` / `lower` / `preserve`（实验性） | `upper` |\n| `--dry-run` | 仅输出到终端，不改写文件 | 关闭 |\n| `-V, --version` | 查看版本号 | |\n| `-h, --help` | 查看帮助信息 | |\n\n## 配置文件\n\n在项目根目录创建 `.dbsqlfmtrc` 文件，使用 JSON 格式：\n\n```json\n{\n  \"language\": \"mysql\",\n  \"indent\": \"4\",\n  \"keywordCase\": \"upper\",\n  \"functionCase\": \"lower\"\n}\n```\n\nCLI 命令行选项会覆盖配置文件中的同名设置。\n\n## 支持的方言\n\n`mysql` `postgresql`\n\n不传 `--language` 的情况下，工具会自动识别方言，无需手动指定。识别依据包括反引号、`::` 类型转换、`AUTO_INCREMENT`、`ILIKE` 等方言特征。如果仍需要覆盖检测结果，显式传入 `--language` 即可。\n\n## 开发\n\n### 前置要求\n\n- Node.js >= 18\n- npm\n\n### 本地开发\n\n```bash\n# 克隆仓库\ngit clone https://github.com/badai147/dbsqlfmt.git\ncd dbsqlfmt\n\n# 安装依赖\nnpm install\n\n# 编译 TypeScript\nnpm run build\n\n# 运行\nnode dist/cli.js format path/to/file.sql\n```\n\n### 测试\n\n```bash\n# 运行全量测试\nnpm test\n\n# 监听模式（开发测试用）\nnpm run test:watch\n```\n\n测试文件位于 `src/__tests__/`，使用 vitest 框架。详见 [`src/__tests__/README.md`](src/__tests__/README.md)。\n\n### 项目结构\n\n```\ndbsqlfmt/\n├── src/\n│   ├── __tests__/\n│   │   ├── README.md       # 测试说明\n│   │   ├── config.test.ts    # 配置加载测试（8 用例）\n│   │   ├── detect.test.ts    # 方言检测单元测试（60 用例）\n│   │   ├── formatter.test.ts # 格式化集成测试（16 用例）\n│   │   ├── index.test.ts     # 主流程测试（5 用例）\n│   │   └── utils.test.ts     # 工具函数测试（6 用例）\n│   ├── cli.ts        # Commander 参数解析与命令注册\n│   ├── index.ts      # 主流程编排\n│   ├── formatter.ts  # sql-formatter 封装\n│   ├── detect.ts     # 方言自动检测（加权评分）\n│   ├── config.ts     # 配置文件加载与合并\n│   └── utils.ts      # 文件读写工具函数\n├── package.json\n├── package-lock.json\n├── tsconfig.json\n└── README.md\n```\n\n## 更新日志\n\n详见 [CHANGELOG.md](CHANGELOG.md)。\n\n## 许可证\n\nMIT\n","readmeFilename":"README.md"}