dixavier27/eco

GitHub: dixavier27/eco

eco 是一个为 Bun 应用程序提供构建、打包、混淆和发布功能的 CLI 工具生态系统,简化跨平台应用分发流程。

Stars: 0 | Forks: 0

# eco 🌱 Bun 应用程序的构建、打包、混淆与发布工具包 — 一套用于打包和分发跨平台应用程序的工具生态系统。 📚 **完整文档:** [dixavier27.github.io/eco](https://dixavier27.github.io/eco/) ## 安装 ``` bun add -D github:dixavier27/eco#v2.0.0 ``` ## 快速开始 ``` eco init # cria eco.config.js inferindo do package.json eco check # valida configuração e ambiente eco info # exibe versões instaladas e config detectado eco package # gera o bundle eco release # pipeline completo: package → obfuscate → binários ``` ## 命令 | 命令 | 描述 | |---------|-----------| | `eco new ` | 基于模板创建新项目 (`--template=cli-tool\|library`) | | `eco init` | 创建 `eco.config.js`,默认值从 `package.json` 推断 | | `eco check` | 验证配置和环境(入口、混淆器、Bun、交叉编译) | | `eco doctor` | 带 `--fix` 选项的扩展诊断,用于自动修复问题 | | `eco info` | 显示 eco、Bun、javascript-obfuscator 的版本和配置路径 | | `eco config show` | 以 JSON 格式打印解析后的配置(包含默认值) | | `eco scripts inject` | 将 eco 脚本添加到 `package.json` | | `eco ci generate` | 生成 `.github/workflows/ci.yml` 和 `release.yml` | | `eco package` | 生成单一 JS 包 | | `eco obfuscate` | 混淆包(需先执行 `package`) | | `eco release` | 完整流水线:打包 → 混淆 → 生成原生二进制文件 | | `eco completion ` | 为 `bash`、`zsh` 或 `fish` 生成自动补全脚本 | 获取每个命令的详细信息:`eco --help`。 ## 配置 在项目根目录创建 `eco.config.js`(或 `.ts`、`.mjs`): ``` /** @type {import('@dixavier27/eco').EcoConfig} */ export default { entry: 'src/main.ts', outDir: 'dist', bundleName: 'bundle.js', releaseName: 'meu-app', obfuscatorConfig: 'obfuscator.config.cjs', platforms: ['linux', 'win'], } ``` 所有字段都有默认值 — 如果愿意,可以从 `export default {}` 开始。 ### 构建特性 ``` export default { entry: 'src/main.ts', // sourcemaps: sourcemap: 'external', // false | 'inline' | 'external' // cópia declarativa de arquivos: assets: [ { from: 'node_modules/@fastify/swagger-ui/static', to: 'dist/static' }, { from: 'public', to: 'dist/public' }, ], // env-var injection no bundle (usado como bun build --define): define: { 'process.env.NODE_ENV': '"production"', }, // versão do package.json é injetada automaticamente como __VERSION__: embedVersion: true, // paralelização das compilações no release (default true): parallel: true, // SHA256 checksums em release/checksums.txt: checksums: true, } ``` ### 流水线钩子 ``` import { cp } from 'node:fs/promises' export default { entry: 'src/main.ts', // copia arquivos estáticos depois do bundle: afterPackage: async (cfg) => { await cp('node_modules/@fastify/swagger-ui/static', `${cfg.outDir}/static`, { recursive: true }) }, } ``` 钩子:`afterPackage`、`afterObfuscate`、`afterRelease`。 ## 全局标志 | 标志 | 描述 | |------|-----------| | `-h, --help` | 根级或特定命令的帮助 | | `-v, --version` | 显示 eco 版本 | | `--config ` | 配置文件的自定义路径 | | `--platforms ` | 覆盖目标平台 (`linux,win,macos,macos-arm64`) | | `--verbose` | 详细输出 | | `--quiet` | 静默日志(仅显示错误) | | `--dry-run` | 显示将要执行的操作但不实际执行 | ## 特定命令标志 | 命令 | 标志 | 描述 | |---------|------|-----------| | `package` | `--watch` | 文件更改时重新打包(委托给 `bun build --watch`) | | `release` | `--skip-obfuscate` | 跳过混淆步骤 | | `release` | `--keep-going` | 即使某个平台失败也继续 | | `release` | `--no-parallel` | 顺序编译(而非并行) | | `init` | `--force` | 覆盖现有的 `eco.config.js` | ## 支持的平台 - `linux` (x64) - `win` (Windows x64, `.exe`) - `macos` (x64) - `macos-arm64` (Apple Silicon) ## 集成到您的项目 `package.json` 中 ``` "scripts": { "package": "eco package", "obfuscate": "eco obfuscate", "release": "eco release", "check": "eco check" } ``` ## Shell 自动补全 ``` # Bash eco completion bash > ~/.eco-completion.bash echo 'source ~/.eco-completion.bash' >> ~/.bashrc # Zsh eco completion zsh > ~/.zsh/completions/_eco # 确保 ~/.zsh/completions/ 在 $fpath 中 # Fish eco completion fish > ~/.config/fish/completions/eco.fish ``` ## GitHub Action(复合动作) 要在其他项目的 workflows 中使用 eco,而无需重写 30 行 YAML: ``` - uses: dixavier27/eco/composite-action@v2.7.0 with: command: release platforms: linux,win upload-artifacts: true ``` 详情请参见 [`composite-action/README.md`](composite-action/README.md)。 ## 系统要求 - [Bun](https://bun.sh) >= 1.2.0 ## 30 秒创建新项目 从零开始,使用精选模板: ``` bunx @dixavier27/eco new minha-app cd minha-app bun install bun run dev hello ``` 可用模板: - **`cli-tool`** (默认) — Bun CLI,包含 `bin/`,通过 `eco package`/`release` 构建 - **`library`** — TypeScript 库,使用 `bun test`,通过 `tsc` 生成 `.d.ts` 类型定义 - **`backend-fastify`** — Fastify + Zod API(含 helmet、cors、错误处理、环境变量验证、示例 `/hello/:name` 及使用 `app.inject()` 进行测试) - **`frontend-angular-tauri`** — Angular 21 standalone 桌面应用 + Tauri 2 + Tailwind + Playwright(含 signal 的组件、示例 Rust 命令 `greet`、计数器的 e2e 测试) 对于**现有项目**: ``` cd meu-projeto-existente bun add -D github:dixavier27/eco#v2.4.0 eco init # cria eco.config.js eco scripts inject # adiciona scripts no package.json eco ci generate # gera workflows ci.yml + release.yml eco doctor --fix # cria .gitignore e obfuscator.config.cjs ``` ## 开发路线图 - ✅ **v2.0** — 基础:重命名、Zod、钩子、新命令、全局标志、开发体验优化 - ✅ **v2.2** — 构建特性:sourcemaps、声明式资源、定义、版本嵌入、并行化、校验和 - ✅ **v2.3** — 平台工程:`eco scripts inject`、`eco ci generate`、`eco doctor` - ✅ **v2.4** — 模板:`eco new --template=cli-tool|library` - ✅ **v2.5** — `backend-fastify` 模板 (Fastify + Zod + Vitest) - ✅ **v2.6** — `frontend-angular-tauri` 模板 (Angular + Tauri + Tailwind) - ✅ **v2.7** — 生态系统:复合 GitHub Action + 自动补全 (bash/zsh/fish) - ✅ **v2.8** — 文档站点 VitePress + 迁移指南 ([dixavier27.github.io/eco](https://dixavier27.github.io/eco/)) - ⏳ **延迟** — 代码签名(Windows signtool、macOS codesign + 公证)— 将在有用户要求时实施
标签:Bun运行时, CMS安全, JavaScript, LNA, SOC Prime, TypeScript, 代码混淆, 发布流水线, 后端开发, 多平台发布, 安全插件, 工作流生成, 应用分发, 应用构建, 开发工具, 数据可视化, 文档结构分析, 模板生成, 混淆工具, 生态系统, 脚本注入, 自动化构建, 诊断工具, 跨平台编译, 软件发布, 软件打包