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
标签:Bun运行时, CMS安全, JavaScript, LNA, SOC Prime, TypeScript, 代码混淆, 发布流水线, 后端开发, 多平台发布, 安全插件, 工作流生成, 应用分发, 应用构建, 开发工具, 数据可视化, 文档结构分析, 模板生成, 混淆工具, 生态系统, 脚本注入, 自动化构建, 诊断工具, 跨平台编译, 软件发布, 软件打包