Community编程与开发github.com

dart-lang/dart-build-cli-app

入口点结构、退出代码和跨平台脚本。适用于构建命令行工具、脚本或应用程序。

dart-build-cli-app 是什么?

该技能提供了一套完整的Dart命令行应用程序构建指南,涵盖了入口点结构、退出代码处理和跨平台脚本编写。它适用于开发命令行工具、脚本或应用程序的场景,帮助开发者遵循最佳实践来组织代码和确保跨平台兼容性。技能文档详细说明了如何使用标准的main函数作为入口点,正确处理退出代码以指示程序执行状态,以及编写在不同操作系统上都能运行的脚本。利用此技能,开发者可以构建健壮、可维护且易于分发的命令行应用。主要支持Dart语言相关的开发平台和工具。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/dart-lang/skills/tree/main/skills/dart-build-cli-app

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

dart-build-cli-app 是做什么的?

入口点结构、退出代码和跨平台脚本。适用于构建命令行工具、脚本或应用程序。

概述

本技能帮助您使用Dart语言构建命令行应用程序。它规定了入口点结构、退出代码和跨平台脚本的编写方式,确保您的CLI工具在不同操作系统上行为一致且易于维护。

入口点结构

一个标准的Dart CLI程序使用main函数作为入口点。该函数接收命令行参数(通常为List<String>类型)并返回void或Future<void>。

void main(List<String> arguments) {
  // 此处编写CLI逻辑
  print('Hello, CLI!');
}

退出代码

程序应通过退出代码指示其执行状态。通常使用0表示成功,非零值表示各种错误。可通过exitCode全局变量或dart:io库中的exit()函数进行设置。

import 'dart:io';

void main(List<String> arguments) {
  final success = processArguments(arguments);
  if (!success) {
    exit(1); // 退出,代码为1,表示失败
  }
}

跨平台脚本

为确保脚本在Windows、macOS和Linux上都能正常运行,请遵循以下建议:

  • 使用路径分隔符时,采用dart:io中的Platform.pathSeparator或Platform.script来获取脚本路径。
  • 避免使用平台特定的命令行参数或环境变量。
  • 使用Process.run或Process.start执行外部命令时,确保命令名称和参数在任何目标平台上都存在。

项目结构建议

建议将CLI应用程序组织为以下结构:

my_cli_app/
  bin/
    my_cli_app.dart   // 入口点
  lib/
    my_cli_app.dart   // 核心逻辑
  test/
    my_cli_app_test.dart
  pubspec.yaml

bin/目录包含可执行入口文件, lib/目录存放共享库代码,test/目录用于单元测试。

发布到pub.dev

将CLI应用发布到 pub.dev 后,用户可通过dart pub global activate安装,并全局运行。确保pubspec.yaml中的executables字段正确设置,例如:

executables:
  my_cli_app: my_cli_app

更详细的构建说明请参考官方Dart CLI应用文档。

Individual skills in this repo

This repo contains 8 individual skills — each has its own dedicated page.

相关技能