欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

请添加图片描述

前言

在鸿蒙(OpenHarmony)工具链开发或脚手架构建中,清晰的终端反馈能显著降低开发者的心智负担。mason_logger 提供了一套现代化的 UI 套件,包含动态进度条、交互式列表及色彩分级的消息提示,是打造顶级 CLI 交互体验的必选方案。

一、核心价值

1.1 基础概念

mason_logger 利用 ANSI 转义字符在终端上“画图”。

鸿蒙 CLI 请求

Mason Logger

Info/Success/Detail: 带图标的彩色消息

Progress: 动态旋转/进度条

Select: 键盘上下选取的交互

Confirm: [y/N] 式询问交互

1.2 进阶概念

  • Progress Grouping:支持一个大任务下挂载多个极其连贯的子任务进度。
  • Auto-Leveling:能根据当前鸿蒙运行环境(如 CI/CD 或本地真机终端)自动判定是否开启色彩。

二、核心 API / 组件详解

2.1 初始化与基础打印

import 'package:mason_logger/mason_logger.dart';

void runHarmonyStep() {
  final logger = Logger();
  
  // ✅ 推荐做法:分级明确的视觉反馈
  logger.info('🚀 正在初始化鸿蒙原子化服务...');
  logger.success('✅ 环境变量配置检查完成!');
  logger.warn('⚠️ 监测到当前系统为模拟器环境');
}

在这里插入图片描述

2.2 使用炫酷的进度条

final progress = logger.progress('正在部署 HAP 包至真机设备...');
// 模拟执行一段耗时任务...
progress.complete('部署完毕!🎉');

在这里插入图片描述

三、场景示例

3.1 场景一:鸿蒙级项目的“智能初始化”脚本

在引导开发者配置项目时,通过交互式选择减少输入错误。

import 'package:mason_logger/mason_logger.dart';

void setupProject() {
  final logger = Logger();
  
  // 💡 技巧:交互式选择
  final platform = logger.chooseOne(
    '请选择您的目标鸿蒙设备类型:',
    choices: ['手机', '平板', '电视', '穿戴设备'],
    defaultValue: '手机',
  );
  
  logger.info('您已选择:$platform,正在为您适配屏幕密度...');
}

四、OpenHarmony 平台适配挑战

4.1 终端 ANSI 与 Unicode 显示兼容性

不同的鸿蒙开发机(Windows/Mac/Linux)对于特殊的 Emoji(如 🚀, ✅)显示支持程度不一。

适配策略建议

  1. 备选字符mason_logger 具备良好的 Fallback 机制。如果是在鸿蒙老旧终端下,它会自动将 Emoji 降级为 [INFO] 这种纯文本。
  2. 异步主循环:由于 progress.complete() 需要不断刷新终端。在执行一些极其阻塞 CPU 的计算任务时,请确保 Logger 的刷新动作有足够的时隙,否则进度条会卡住。

五、综合实战示例代码

这是一个包含了工整表格展示的鸿蒙“资源清单扫描仪”逻辑:

import 'package:mason_logger/mason_logger.dart';

void scanHarmonyAssets() {
  final logger = Logger();
  
  logger.info(lightCyan.wrap('--- 📦 鸿蒙本地资源资产负债表 ---')!);
  
  // 💡 核心展示:精美的表格格式化
  const header = ['资源名', '类型', '大小', '状态'];
  final data = [
    ['logo.png', '图片', '24 KB', '√'],
    ['main.vcfg', '配置', '1.2 MB', '×'],
    ['theme.ttf', '字体', '4.5 MB', '√'],
  ];

  for (final row in data) {
    logger.info(
      '${row[0].padRight(12)} | ${row[1].padRight(6)} | ${row[2].padRight(8)} | ${row[3]}',
    );
  }
  
  logger.err('归档任务异常:检测到 main.vcfg 文件损坏!');
}

在这里插入图片描述

六、总结

mason_logger 绝不仅仅是为了好看。在鸿蒙这种侧重“分布式”和“工程化”的体系中,好的 CLI 交互能让开发者的心智负担降低。

核心建议

  1. 任何脚本只要运行超过 1 秒,务必使用 logger.progress()
  2. 涉及危险操作(如删除本地 HAP 缓存),务必通过 logger.confirm() 确认。
Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐