# @amboras-dev/money-gate 中文文档

规范地址：https://npmcn.com/package/%40amboras-dev/money-gate/

版本：0\.1\.5
npm 元数据更新时间：2026-10-31T15:31:39.327Z
中文译文更新时间：2026-11-06T02:04:48.359Z
软件包许可：UNLICENSED

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

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

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

- 包体积（解压后）：107 kB，12 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=20
- 运行依赖：1 个
- 首次发布：2026-10-26T07:57:18.520Z
- 最新版本发布：2026-10-31T15:31:39.158Z
- 近 30 天下载量：6777（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：7（近 12 个月 7 个）

## 中文简介

Amboras的货币闸门重置:一个可找到手写货币代码@amboras-dev/货币替换(10缩放能力、浮动货币数学、Intl货币格式化、当地货币表、硬码货币回落、货币SQL、小-un)的dev-time检查器

## 安装

```sh
npm install @amboras-dev/money-gate
```

也可以使用：`pnpm add @amboras-dev/money-gate`、`yarn add @amboras-dev/money-gate`、`bun add @amboras-dev/money-gate`

## README

# `@amboras-dev/money-gate`

钱门:一个找到手写钱码的dev-time检查器 `@amboras-dev/money` 替换. 每找到要使用的软件包函数的名称 . 一个运行中的依赖, `@amboras-dev/money` (其货币登记); 节点 .

```sh
pnpm add -D @amboras-dev/money-gate
npx money-gate baseline          # once, when a repo adopts the gate
npx money-gate check --ratchet   # in CI
```

```text
src/checkout.ts:4:30 MG002 hand-rolled x100 / x1000 money scaling -> fromMajor / toMajorDecimal / percentOf
src/checkout.ts MG002: 2 found, baseline allows 1
money-gate: 1 count(s) above the baseline, 0 below it
```

## 规则

| 编号 | 查找 | 改为使用 |
| --- | --- | --- |
| MG001号文件 | `10 **`, (中文(简体) ), `Math.pow(10,`, (中文(简体) ), `1e2`, (中文(简体) ), `1e3`, (中文(简体) ), `1e7`,以及 `10_000_000` 以比率(如果是上限)相邻 | `storageScale`, (中文(简体) ), `fromMajor`, (中文(简体) ), `toMajorDecimal`, (中文(简体) ), `RATE_REF` |
| MG002 (选入) | `* 100`, (中文(简体) ), `/ 100`, (中文(简体) ), `* 1000`, (中文(简体) ), `/ 1000` 包括货币操作(金额、价格、总额、成本、费用、小计、余额、小数、分数、主要、储存、价值),而不是一次 | `fromMajor`, (中文(简体) ), `toMajorDecimal`, (中文(简体) ), `percentOf` |
| MG003(选入) | `toFixed(` 打开,和 `parseFloat(` 编号 : `Number(` 货币价值 | `toMajorDecimal`, (中文(简体) ), `readStored`, (中文(简体) ), `parseImportAmount` |
| MG004 导弹 | `Intl.NumberFormat` 与 `style: 'currency'` 或者说 `currencyDisplay`, (中文(简体) ), `toLocaleString` 有货币 | `formatMoney` |
| MG005导弹 | 数组、 设置或对象字面上持有 3 个或更多货币代码 | 登记册, `pspCurrencies` |
| MG006 导弹 | `?? 'USD'`, (中文(简体) ), `|| 'EUR'`, (中文(简体) ), `currency = 'usd'` 默认, SQL `COALESCE(currency_code, 'usd')` | `firstCurrency` |
| MG007号 | SQL : (英语) `decimal_digits`, (中文(简体) ), `THEN 1000 ELSE 100`, (中文(简体) ), `POWER(10, ...)`, (中文(简体) ), `10 ^ ...`, (中文(简体) ), `jsonb_build_object('value'`,计算 `rate_numerator` 编号 : `rate_denominator`, (中文(简体) ), `ROUND(..., 2)` 钱 | `@amboras-dev/money/sql` 建设者 |
| MG008 导弹 | 退休援助人员进口(下表),当地 `formatMoney` 编号 : `formatCurrency`大数 `toNumber` 编号 : `toNum`外头的遗赠货币 `legacyShimAllow` | 每个查找名称的函数 |
| MG009 导弹 | `minor units`, (中文(简体) ), `in cents`, (中文(简体) ), `divide by 100`, (中文(简体) ), `(cents)` 在字符串中,外部装饰器调用(文本禁止单位使用时不使用:"Never mess 或 small unit") | `MONEY_UNIT_SENTENCE`, (中文(简体) ), `STORAGE_UNIT_SENTENCE` |
| 千兆马赫 | 豁免,无规则编号或理由 | 完全豁免 |

代码规则只读代码:注释,字符串字元和正格克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克. JSX 关闭标签(`</p>`, (中文(简体) ), `</>`, (中文(简体) ), `<a href={x} />`)不作regex字读取. 字符串规则读取字符串和模板文字; SQL 规则读取字符串文字和 `.sql` 文档.

MG002和MG003默认关闭:它们自行标出百分比,点名 `total` 和DOM系统 `.value` 阅读太频繁. 打开每回波 `"rules": { "MG002": "on", "MG003": "on" }` 在配置中.

货币代码(MG005,MG006):一个大写代码总是算数. 小写代码,或同为常用词或缩略语的代码(`ALL`, (中文(简体) ), `TOP`, (中文(简体) ), `TRY`, (中文(简体) ), `PHP`, (中文(简体) ), `CAD`, (中文(简体) ), `AMD`, (中文(简体) ), `BTN` 和其余部分 `WORD_COLLISIONS` 内 `src/currencies.ts`),只计算货币背景. 在代码中,表示其前方的语句取出货币名称(`currency`, (中文(简体) ), `currencies`, (中文(简体) ), `ZERO_DECIMAL`. ) (中文(简体) ) `store.currency ?? 'usd'` 财务报告和审定财务报表 `const zeroDecimalCurrencies = ['jpy', ...]` 计数, `filter ?? 'all'` 财务报告和审定财务报表 `['all', 'top', 'try']` 别. 一个街区里的第一个声明 也读了街区的头条,所以 `function normalizeCurrency(code) { return code ?? 'usd' }` 计数. 在模板本身的文本中读取模板文字中的倒置(以文本形式生成的存储前置代码). 在 SQL 中 `COALESCE`,第一个参数必须提及货币或代码栏.

MG009在装饰器调用参数中跳过字符串(`@ApiProperty({ description: 'Amount in cents' })`,任意 `@Name(...)`:这些文档是Swagger/OpenAPI的电线字段,而不是模型的措辞. 工具计划中的字符串( T)`z.number().describe('...')`)和提示仍在检查中.

### 退休人员(MG008)

| 帮助 | 改为使用 |
| --- | --- |
| `divisorFor` | `storageScale(code)` |
| `storageDivisorForDigits` | `storageScale(code)` (按代码键,不是数字;在SQL中 `@amboras-dev/money/sql` 建设者 |
| `fractionDigitsFor` | `storageDigits(code)` 因为它是如何储存的, `displayDigits(code)` 为了显示什么 |
| `isoFractionDigits` | `pspWireDigits(psp, code)` 从 `@amboras-dev/money/wire` |
| `toMinorUnits` | `fromMajor(major, code)` |
| `toMajorUnits` | `toMajorDecimal(roundToUnit(readStoredDecimal(raw), code))`: Medusa的总数可以是分数(sevDesk, GA4,发票)和 `readStored` 投出分数 |
| `readAmountNumber`大数 `toNumber` 编号 : `toNum` | `readStoredDecimal(raw)` (保留分数),或 `readStored(raw, code)` 全部储存量 |
| a 当地 `formatMoney` 编号 : `formatCurrency` | `formatMoney(m)` 从 `@amboras-dev/money` |
| 留下的货币 shim | `currencyCode(value)` 或者说 `firstCurrency(...)` |
| `toStorageAmount` (单位:千美元)`@amboras-dev/capability-kit`(中文(简体) ) | `fromMajor(major, code).amount` |
| `fromStorageAmount` (单位:千美元)`@amboras-dev/capability-kit`(中文(简体) ) | `toMajorDecimal(readStored(stored, code))`,或 `toMajorNumber` 对于浮点 |
| `storageScale` (单位:千美元)`@amboras-dev/capability-kit`(中文(简体) ) | `storageScale(code)` 从 `@amboras-dev/money` |
| `fractionDigits` (单位:千美元)`@amboras-dev/capability-kit`(中文(简体) ) | `storageDigits(code)` |
| `moneyView` (单位:千美元)`@amboras-dev/capability-kit`(中文(简体) ) | `moneyView(readStored(stored, code))` 从 `@amboras-dev/money/ai` |

只有在从 `@amboras-dev/capability-kit`; 软件包本身 `storageScale` 财务报告和审定财务报表 `moneyView` 是替换.

## 豁免

```ts
// money-gate-exempt: MG001 the one legacy scale kept until the wire migration
const LEGACY_SCALE = 10 ** 2;
```

标记覆盖了自己的行和下方的两行,仅用于被命名的规则. 它只算在评论中`//`, (中文(简体) ), `/* */`,或 `--` 在 SQL 中);字符串正文中相同的文字是数据,不免除任何内容. 规则ID和理由是强制性的;没有它们,标记就是MG000违章行为,并免除了任何东西. 旧的 `money-scale-exempt: <reason>` 标记计为迁移期间的MG001豁免.

## 基线

`money-gate.baseline.json` 将违规案件立案 并按档案和规则计算. `check` (一) 任何超过基线的计数都未能实现(新的违规行为); `check --ratchet` 在基准降低之前,低于基准的计数也会失败,因此基准只缩小. `baseline` 写入当前计数并拒绝提高任何计数,除非 `--force` (在评论中出现).

基线(第2版)还存储了每个文件和规则的指纹:每条违法行的出处文本,被修剪,排序和散列(SHA-256,前16个正数). 当行在文件内移动或文件被更名时,它不会改变;当任何违反的行被添加,去除或编辑时,它也会改变.

纯粹的重命名或移动会保留它的计数. 基准文件不会继承基准文件的条目,而基准文件只有在对每项规则来说,计数和指纹都相等时才不再扫描. 礛 `check` 通过并打印重命名,以及 `baseline` 重写新路径的条目, 不 `--force`。 。 。 . `check --ratchet` 失败直到基线被刷新, 因此一个 stale 路径不能在以后被再使用 . 删除一个基线文件, 并添加一个与此相同的不相关的文件, 不是一个重命名( 线条不同) , 因此其违反失败 `check` 作为新的. 添加、删除或编辑违法行的重命名不包含: 修正违法行,或 `baseline --force`。 。 。 . 第1版基线(仅计数)仍然被读取,但没有任何内容被取出; `money-gate baseline` 升级它.

## 配置

`money-gate.config.json` 在 repo 根( 所有键可选) :

```json
{
    "include": ["src/**/*.ts", "scripts/**/*.ts"],
    "sql": ["src/migrations/**/*.sql"],
    "exclude": ["src/generated/**"],
    "legacyShimAllow": ["src/modules/payments/stripe/**"],
    "baseline": "money-gate.baseline.json",
    "rules": { "MG002": "on", "MG003": "on" }
}
```

`include` 默认为 `src/**/*.{ts,tsx,js,jsx,mjs,cjs}`。 。 。 . 完全不选择文件的配置是一个配置错误( exit 2) , 命名了 globs 和 root, 绝不是 “ ok ” : 代码不下的一个 repo `src/` 必须设置 `include`。 。 。 . `rules` 开关 MG001-MG009 `"on"` 或者说 `"off"` 从其默认值(MG002和MG003启动)起.

从未扫描 : `node_modules`, (中文(简体) ), `dist`, (中文(简体) ), `*.generated.ts` 和测试文件`*.spec.*`, (中文(简体) ), `*.test.*`),可建立固定装置. 球状支持 `**`, (中文(简体) ), `*`, (中文(简体) ), `?` 财务报告和审定财务报表 `{a,b}`。 。 。 . 疏 漏 (`!pattern`)不支持,并且是一个配置错误,而不是一个沉默的不开放:在下方列出模式 `exclude`。 。 。 .

## 收 养

1.  添加一个 `money-gate.config.json` 谁 `include` (和 `sql`)选择repo的代码;门拒绝在空选择上运行.
2.  `npx money-gate baseline` 一次,输入基线,然后运行 `npx money-gate check --ratchet` 在中央情报局.
3.  退去Repo的自已的钱卫 作为他们的规则土地在这里. 美杜萨: `src/common/utils/money-conversion-sites.spec.ts` 要求 `CASE WHEN ... decimal_digits ... THEN 1000 ELSE 100 END` 存储divisor 在 `analytics.service.ts`,MG007的禁令. 它的通过 PR 重写了要断言 `@amboras-dev/money/sql` 代之以建造者,并放弃其10次检查,即MG001(代码)和MG007(`POWER(10, ...)`, (中文(简体) ), `10 ^ ...` 现在的封面.

## 图标

-   `money-gate check [--ratchet] [--json] [--root <dir>] [--config <file>]`: 出 0 清, 1 违反, 2 使用或配置出错 .
-   `money-gate baseline [--force] [--root <dir>] [--config <file>]`。 。 。 .
-   图书馆输出相同的部件(`run`, (中文(简体) ), `scanSource`, (中文(简体) ), `scanRepo`, (中文(简体) ), `RULES`, (中文(简体) ), `loadConfig`,基线帮助者).

## 常见问题

### @amboras-dev/money-gate 是什么？

Amboras的货币闸门重置:一个可找到手写货币代码@amboras-dev/货币替换\(10缩放能力、浮动货币数学、Intl货币格式化、当地货币表、硬码货币回落、货币SQL、小-un\)的dev-time检查器

### 如何安装 @amboras-dev/money-gate？

在项目目录运行 npm install @amboras-dev/money-gate，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 money-gate，可以用 npx money-gate 直接运行。

### @amboras-dev/money-gate 支持 TypeScript 吗？

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

### @amboras-dev/money-gate 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @amboras-dev/money-gate 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=20。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @amboras-dev/money-gate 可以商用吗？

@amboras-dev/money-gate 使用 UNLICENSED 许可。作者声明为 UNLICENSED，即不授予公开使用许可（与公共领域的 Unlicense 不同）。使用前需获得作者授权。以上为概括，不构成法律意见，请以许可原文为准。

### @amboras-dev/money-gate 的下载量有多少？

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

### @amboras-dev/money-gate 还在维护吗？

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

