nargo
🎯 简介
nargo 是 Nargo 编译工具链的核心入口点,它不仅是一个命令行工具,更是一个高度集成的开发工作站。通过封装底层的编译器、打包器、测试运行器、Linter 以及开发服务器,nargo 为开发者提供了一套完整、一致且极速的开发流程。无论是在单体应用还是复杂的 Monorepo 项目中,nargo 都能提供卓越的性能支撑。
✨ 核心特性
- 一站式工作流: 集成了从项目初始化、开发调试、自动化测试、静态分析到生产构建的全生命周期指令。
- Monorepo 原生支持: 深度集成
nargo-workspace,能够自动识别工作区结构,支持跨包任务编排与混合热更新。 - 极致性能: 核心链路均采用 Rust 编写,利用多线程并发与增量编译技术,显著提升开发反馈速度。
- 全方位的质量保障: 内置 Linter、安全审计 (Audit)、代码格式化 (Format) 以及高精度的基准测试 (Bench)。
- 原生能力扩展: 提供高性能的 Git 操作封装及 Git Hooks 自动化管理。
- 智能类型桥接: 通过
nargo bridge命令,实现 Rust 后端与 TypeScript 前端的类型自动同步。
🏗️ 核心指令详解
开发与调试
nargo run dev
启动带有 HMR 和 Mock 功能的高性能开发服务器:
- 混合热更新: 同时支持 TypeScript 前端和 Rust 后端的热更新
- 智能 Mock: 内置 Mock 服务,无需后端即可进行前端开发
- 实时类型检查: 开发过程中实时进行类型检查,提前发现错误
- 多线程编译: 利用多核 CPU 加速编译过程
# 启动开发服务器
# 启动支持混合热更新的开发服务器
# 指定端口
构建与部署
nargo build
执行生产环境构建,生成极致优化的代码产物:
- 智能增量构建: 只重新构建变更的文件
- 多线程并行构建: 充分利用多核 CPU
- 自动代码分割: 智能分析依赖关系,生成最优的代码分割策略
- Tree Shaking: 自动移除未使用的代码
- 生产环境优化: 内置多种生产环境优化策略
# 构建生产版本
# 构建特定环境
# 启用详细输出
测试与质量
nargo test
运行单元测试、集成测试,并支持基于插桩的代码覆盖率收集:
- 多测试类型支持: 单元测试、集成测试、端到端测试
- 并行测试执行: 多线程并行执行测试
- 测试覆盖率: 自动生成测试覆盖率报告
- 智能测试选择: 支持按模式选择测试
# 运行所有测试
# 运行特定测试
# 生成测试覆盖率报告
nargo lint
对项目进行全方位的静态代码检查,识别潜在风险:
- 多语言支持: 支持 TypeScript、Rust、CSS 等多种语言
- 实时检查: 开发过程中实时进行代码检查
- 可配置规则: 支持自定义检查规则
- 自动修复: 支持自动修复某些类型的问题
# 运行代码检查
# 自动修复问题
# 检查特定目录
nargo format
自动化格式化 Nargo 组件(Template, Script, Style):
- 统一代码风格: 确保项目代码风格一致
- 多语言支持: 支持多种语言的格式化
- 可配置规则: 支持自定义格式化规则
- 批量处理: 支持批量格式化多个文件
# 格式化所有文件
# 检查格式但不修改
# 格式化特定文件
性能与安全
nargo bench
执行高精度的性能基准测试,辅助开发者进行性能调优:
- 高精度测量: 提供精确的性能测量数据
- 趋势分析: 跟踪性能变化趋势
- 多维度测试: 支持多种性能指标测试
- 比较模式: 支持与历史版本比较
# 运行基准测试
# 与历史版本比较
# 测试特定功能
nargo audit
进行项目安全扫描,识别硬编码凭据与危险依赖:
- 依赖扫描: 检查依赖项的安全漏洞
- 代码审计: 识别硬编码的凭据和敏感信息
- 配置检查: 检查项目配置中的安全问题
- 报告生成: 生成详细的安全审计报告
# 运行安全审计
# 生成详细报告
# 忽略特定漏洞
Monorepo 管理
nargo run
在 Monorepo 环境下跨包运行任务,支持复杂的依赖关系处理:
- 智能依赖分析: 自动分析包之间的依赖关系
- 并行任务执行: 多线程并行执行任务
- 任务编排: 支持复杂的任务编排
- 环境一致性: 确保所有包使用一致的环境
# 运行特定包的任务
# 并行运行多个任务
# 运行工作区所有包的任务
类型桥接
nargo bridge
同步 Rust 后端与 TypeScript 前端的类型定义:
- 实时同步: 自动同步 Rust 结构体到 TypeScript 类型
- 类型安全: 确保前后端类型一致
- 减少手动工作: 无需手动编写类型定义
- 支持复杂类型: 支持复杂的嵌套类型和泛型
# 同步类型
# 生成类型文档
# 自定义输出路径
📊 与其他工具对比
| 特性 | Nargo CLI | npm/yarn | pnpm | Cargo |
|---|---|---|---|---|
| 启动速度 | ⚡⚡⚡ (瞬时) | ⚡ (一般) | ⚡⚡ (快速) | ⚡⚡ (快速) |
| 内存占用 | 📦 (轻量) | 📦📦📦 (heavy) | 📦📦 (中等) | 📦📦 (中等) |
| 内置测试 | ✅ (完整) | ❌ (需配置) | ❌ (需配置) | ✅ (完整) |
| 内置 lint | ✅ (完整) | ❌ (需插件) | ❌ (需插件) | ❌ (需插件) |
| 内置格式化 | ✅ (完整) | ❌ (需插件) | ❌ (需插件) | ❌ (需插件) |
| Monorepo 支持 | ✅ (原生) | ❌ (需工具) | ✅ (原生) | ❌ (需工具) |
| 类型桥接 | ✅ (原生) | ❌ (不支持) | ❌ (不支持) | ❌ (不支持) |
🔧 配置选项
nargo 支持通过 nargo.config.toml 文件进行配置:
[]
# 开发服务器配置
[]
= 3000
= true
# 构建配置
[]
= "production"
= "aggressive"
# 测试配置
[]
= true
= true
# Linter 配置
[]
= true
= ["no-unused-vars", "no-console"]
🚀 快速开始
安装
# 从源码构建
# 或使用预编译二进制文件
|
初始化项目
# 初始化新项目
# 初始化 Monorepo 项目
# 使用特定模板
🔗 相关项目
- nargo-compiler: 提供核心转译能力
- nargo-server: 驱动开发环境的 Web 服务
- nargo-workspace: 处理多包工作区的管理与调度
- nargo-types: 定义了跨模块共享的通用数据模型
- nargo-bundler: 提供高性能的代码打包能力
- nargo-linter: 提供代码静态分析能力
📚 文档
🤝 贡献
我们欢迎所有形式的贡献!请查看 贡献指南 了解如何开始。
⚖️ License
MIT.
📞 联系我们
如有任何问题或建议,欢迎通过以下方式联系我们:
- Email: team@nargo.dev
- GitHub: nargo-js/nargo