{"id":17657643,"url":"https://github.com/viarotel-org/cleants","last_synced_at":"2025-07-27T05:38:54.549Z","repository":{"id":258093468,"uuid":"873434376","full_name":"viarotel-org/cleants","owner":"viarotel-org","description":"🧹 Convert TypeScript to a cleaner JavaScript project","archived":false,"fork":false,"pushed_at":"2024-11-26T08:06:32.000Z","size":148,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-19T20:53:46.916Z","etag":null,"topics":["clean","cli","converter","js","neat","npx","pure","ts","ts2js","vue","vue3"],"latest_commit_sha":null,"homepage":"https://viarotel.eu.org/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/viarotel-org.png","metadata":{"files":{"readme":"README-CN.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-10-16T06:56:09.000Z","updated_at":"2024-11-26T08:06:36.000Z","dependencies_parsed_at":"2024-10-23T08:54:02.066Z","dependency_job_id":"dbef6051-a401-4b8e-a363-45eb77f7fbf6","html_url":"https://github.com/viarotel-org/cleants","commit_stats":{"total_commits":65,"total_committers":3,"mean_commits":"21.666666666666668","dds":"0.36923076923076925","last_synced_commit":"b961ef89f3e1828f3d44adc4526a1206321a091f"},"previous_names":["viarotel-org/cleants"],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viarotel-org%2Fcleants","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viarotel-org%2Fcleants/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viarotel-org%2Fcleants/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viarotel-org%2Fcleants/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/viarotel-org","download_url":"https://codeload.github.com/viarotel-org/cleants/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252666441,"owners_count":21785259,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clean","cli","converter","js","neat","npx","pure","ts","ts2js","vue","vue3"],"created_at":"2024-10-23T14:42:18.476Z","updated_at":"2025-05-07T09:34:01.230Z","avatar_url":"https://github.com/viarotel-org.png","language":"JavaScript","funding_links":["https://www.paypal.com/paypalme/viarotel"],"categories":[],"sub_categories":[],"readme":"# Cleants\r\n\r\n[![npm 版本](https://img.shields.io/npm/v/cleants)](https://npmjs.com/package/cleants)\r\n[![npm 下载量](https://img.shields.io/npm/dm/cleants)](https://npm.chart.dev/cleants)\r\n\r\n\u003e 🧹 将 TypeScript 转换为更简洁的 JavaScript 项目\r\n\r\n## 功能\r\n\r\n- 🖖 **Vue 优先**：优先支持 Vue 项目转换\r\n- 🔌 **可扩展**：通过插件系统支持多种文件类型\r\n- ⚡ **极致快速**：使用 `ts.transpileModule` 进行快速编译\r\n- 🖥️ **用户友好的 CLI**：一条命令快速转换\r\n- 🧩 **无缝集成**：作为 npm 包导入，轻松集成到项目中\r\n- 🛠️ **可自定义**：通过灵活的选项微调转换过程\r\n- 📊 **进度追踪**：实时反馈转换状态\r\n- 🎯 **选择性转换**：在复制和转换过程中忽略特定模式\r\n- 📦 **依赖管理**：可选择移除指定依赖\r\n- 🔄 **导入优化**：支持替换内部导入\r\n\r\n## 安装\r\n\r\n```shell\r\nnpm install cleants\r\n# 或\r\nyarn add cleants\r\n# 或\r\npnpm add cleants\r\n```\r\n\r\n## 使用方法\r\n\r\n### CLI 使用方法\r\n\r\n```shell\r\nnpx cleants\r\n```\r\n\r\n### 编程使用方法\r\n\r\n```javascript\r\nimport { Cleants } from 'cleants'\r\n\r\nconst cleaner = new Cleants(inputDir, outputDir, options)\r\nawait cleaner.run()\r\n```\r\n\r\n### 外部配置文件\r\n\r\n\u003e 你可以在执行命令目录下添加 `cleants.config.js` 文件来指定更多配置\r\n\r\n```javascript\r\nmodule.exports = {\r\n  inputDir: 'D:\\\\Projects\\\\demo',\r\n  outputDir: 'C:\\\\Users\\\\viarotel\\\\Downloads',\r\n  compilerOptions: {},\r\n  ignoredCopyPatterns: [\r\n    '.git',\r\n    'dist',\r\n    /\\.d\\.ts$/,\r\n    file =\u003e file.includes('node_modules'),\r\n    file =\u003e file.endsWith('.log')\r\n  ],\r\n  ignoredConversionPatterns: [\r\n    'vendor',\r\n    /\\.min\\.js$/,\r\n    file =\u003e file.includes('legacy')\r\n  ],\r\n  getOutputDir: inputDir =\u003e `${path.basename(inputDir)}.cleants`,\r\n  removeDependencies: ['typescript', 'vue-tsc', '@types/node'],\r\n  replaceInternalImports: true,\r\n  plugins: []\r\n}\r\n```\r\n\r\n## API\r\n\r\n### `Cleants`\r\n\r\n该类是将 TypeScript 项目转换为更简洁的 JavaScript 项目的主要类。\r\n\r\n#### 构造函数\r\n\r\n`constructor(inputDir: string, outputDir: string, options?: CleantsOptions)`\r\n\r\n##### 参数\r\n\r\n- `inputDir: string` - 输入目录路径\r\n- `outputDir: string` - 输出目录路径\r\n- `options?: CleantsOptions` - 可选配置选项\r\n\r\n#### CleantsOptions\r\n\r\n##### `progressCallback?: Function`\r\n进度回调函数。\r\n默认值：`undefined`\r\n\r\n##### `compilerOptions?: Object`\r\nTypeScript 编译器选项。\r\n默认值：`{}`\r\n\r\n##### `ignoredCopyPatterns?: Array\u003cstring | RegExp | Function\u003e`\r\n在复制阶段要忽略的模式。\r\n默认值：\r\n```javascript\r\n[\r\n  '.git',\r\n  'dist',\r\n  /\\.d\\.ts$/,\r\n  file =\u003e file.includes('node_modules'),\r\n  file =\u003e file.endsWith('.log')\r\n]\r\n```\r\n\r\n##### `ignoredConversionPatterns?: Array\u003cstring | RegExp | Function\u003e`\r\n在转换阶段要忽略的模式。\r\n默认值：\r\n```javascript\r\n[\r\n  'vendor',\r\n  /\\.min\\.js$/,\r\n  file =\u003e file.includes('legacy')\r\n]\r\n```\r\n\r\n##### `getOutputDir?: Function`\r\n获取输出目录的函数。\r\n默认值：`inputDir =\u003e `${path.basename(inputDir)}.cleants``\r\n\r\n##### `removeDependencies?: Array\u003cstring\u003e`\r\n要移除的依赖。\r\n默认值：`['typescript', 'vue-tsc', '@types/node']`\r\n\r\n##### `replaceInternalImports?: boolean`\r\n是否替换内部导入。\r\n默认值：`true`\r\n\r\n##### `plugins?: Array\u003cPlugin\u003e`\r\n要使用的插件列表。\r\n默认值：`[basePlugin, vuePlugin]`\r\n\r\n#### 注意\r\n\r\n- `actualOutputDir` 将设置为 `path.join(outputDir, options.getOutputDir(inputDir))`\r\n- 如果没有提供 `options.plugins`，默认使用 `[basePlugin, vuePlugin]`\r\n\r\n## 贡献\r\n\r\n欢迎贡献、提出问题和功能请求！请随时查看 [issues 页面](https://github.com/viarotel-org/cleants/issues)。\r\n\r\n## 支持\r\n\r\n如果这个项目对你的工作或学习有所帮助，请考虑为项目点赞或通过以下链接请我喝杯咖啡：\r\n\r\n\u003cdiv style=\"display:flex;\"\u003e\r\n  \u003cimg src=\"https://cdn.jsdelivr.net/gh/viarotel-org/escrcpy@main/src/assets/sponsor/viarotel-wepay.png\" alt=\"viarotel-wepay\" width=\"30%\"\u003e\r\n  \u003cimg src=\"https://cdn.jsdelivr.net/gh/viarotel-org/escrcpy@main/src/assets/sponsor/viarotel-alipay.png\" alt=\"viarotel-alipay\" width=\"30%\"\u003e\r\n  \u003ca href=\"https://www.paypal.com/paypalme/viarotel\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\r\n    \u003cimg src=\"https://cdn.jsdelivr.net/gh/viarotel-org/escrcpy@main/src/assets/sponsor/viarotel-paypal.png\" alt=\"viarotel-paypal\" width=\"30%\"\u003e\r\n  \u003c/a\u003e\r\n\u003c/div\u003e\r\n\r\n## 贡献者\r\n\r\n感谢所有贡献者！\r\n\r\n\u003ca href=\"https://github.com/viarotel-org/cleants/graphs/contributors\"\u003e\r\n  \u003cimg src=\"https://contrib.rocks/image?repo=viarotel-org/cleants\" alt=\"contributors\" /\u003e\r\n\u003c/a\u003e\r\n\r\n## 📚 关键词\r\n`typescript` `javascript` `converter` `vue` `cli`\r\n\r\n## 许可证\r\n\r\n此项目依据 [MIT](LICENSE) 许可证发布。\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviarotel-org%2Fcleants","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fviarotel-org%2Fcleants","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviarotel-org%2Fcleants/lists"}