# @canonical/utils 中文文档

规范地址：https://npmcn.com/package/%40canonical/utils/

版本：0\.44\.0
npm 元数据更新时间：2026-10-23T01:39:51.266Z
中文译文更新时间：2026-11-09T01:15:39.671Z
软件包许可：LGPL-3\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40canonical/utils
原文对照：https://npmcn.com/package/%40canonical/utils/?lang=original
项目主页：https://github.com/canonical/pragma-core#readme
源码仓库：https://github.com/canonical/pragma-core

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：31.7 kB，59 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2024-11-22T16:15:51.682Z
- 最新版本发布：2026-10-23T01:39:50.847Z
- 近 30 天下载量：10384（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：56（近 12 个月 38 个）

## 中文简介

Canonical的Web工程小组的标准通用功能

## 安装

```sh
npm install @canonical/utils
```

也可以使用：`pnpm add @canonical/utils`、`yarn add @canonical/utils`、`bun add @canonical/utils`

## README

# @ canonical/ 无效

Pragma设计系统的实用功能. 这个包包含了经过战斗测试的帮助者,这些帮助者在多个包中证明是有用的.

设计系统助手——导航树, `debounce`, (中文(简体) ), `throttle`, (中文(简体) ), `humanizeNumber`, (中文(简体) ), `pluralize` 编辑 `AllOrNone` 类型 —— 居住 [`@canonical/ds-utils`](https://www.npmjs.com/package/@canonical/ds-utils)。 。 。 .

## 安装

```bash
bun add @canonical/utils
```

## 可用函数

### 弹壳

在个案惯例之间转换字符串。 每个转换器是一个平面命名导出: `capitalize`, (中文(简体) ), `isPascalCase`, (中文(简体) ), `toCamelCase`, (中文(简体) ), `toConstantCase`, (中文(简体) ), `toKebabCase`, (中文(简体) ), `toPascalCase`, (中文(简体) ), `toSnakeCase` 财务报告和审定财务报表 `toTitleCase`。 。 。 .

```typescript
import { toCamelCase, toKebabCase } from "@canonical/utils";

toCamelCase("hello-world"); // "helloWorld"
toKebabCase("helloWorld"); // "hello-world"
```

### 无变化

如果一个条件是假的,则丢出一个错误。 用于在代码中坚持假设 .

```typescript
import { invariant } from "@canonical/utils";

invariant(user != null, "User must be defined");
// Throws `Invariant violation: User must be defined` when user is null;
// TypeScript now knows user is not null past this line.
```

### 缩进

将字符串的每行缩入给定数空格,用于生成可读源输出.

```typescript
import { indent } from "@canonical/utils";

indent("a\nb", 2); // "  a\n  b"
```

### 加入时

将数组合并为字符串,首先将每个元素转换为字符串.

```typescript
import { join } from "@canonical/utils";

join(["a", "b", "c"]); // "a, b, c"
join([1, 2, 3], " | "); // "1 | 2 | 3"
```

## 设计哲学

函数仅在对多个软件包证明有用后才输入此软件包 。 预先抽象被积极避免. 如果一个工具仅在一个地方需要,它就属于该套件,直到出现第二个使用情况.

每个函数都附有综合的TSDoc评论。 该软件包没有运行时间依赖性,将捆绑的撞击保持在最小.

## 常见问题

### @canonical/utils 是什么？

Canonical的Web工程小组的标准通用功能

### 如何安装 @canonical/utils？

在项目目录运行 npm install @canonical/utils，或使用 pnpm add / yarn add / bun add。

### @canonical/utils 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @canonical/utils 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @canonical/utils 可以商用吗？

@canonical/utils 使用 LGPL-3\.0 许可。弱 Copyleft：作为库被调用时通常不要求开源你自己的代码，但修改库本身需以 LGPL 开源；前端打包合并后的适用边界存在不同理解。以上为概括，不构成法律意见，请以许可原文为准。

### @canonical/utils 的下载量有多少？

根据 npm 官方下载统计，@canonical/utils 在 2026/10/09 – 2026/11/07 这 30 天内被下载 10,384 次，日均约 346 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @canonical/utils 还在维护吗？

最新版本 0\.44\.0 发布于 2026/10/23（17 天前）；至今共发布 56 个版本，其中过去 12 个月发布了 38 个；首次发布于 2024/11/23。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

