# @carlosv2/glue 中文文档

规范地址：https://npmcn.com/package/%40carlosv2/glue/

版本：1\.1\.4
npm 元数据更新时间：2026-09-29T17:11:51.094Z
中文译文更新时间：2026-11-09T05:14:24.426Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40carlosv2/glue
原文对照：https://npmcn.com/package/%40carlosv2/glue/?lang=original
项目主页：https://github.com/carlosV2/glue
源码仓库：https://github.com/carlosV2/glue

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

- 包体积（解压后）：277 kB，273 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：2 个
- 首次发布：2024-07-17T16:50:03.198Z
- 最新版本发布：2026-09-29T17:11:50.902Z
- 近 30 天下载量：8519（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：10（近 12 个月 2 个）

## 中文简介

依赖性注射库,不碍事

## 安装

```sh
npm install @carlosv2/glue
```

也可以使用：`pnpm add @carlosv2/glue`、`yarn add @carlosv2/glue`、`bun add @carlosv2/glue`

## README

# 粘贴

这是另一个 [编](https://en.wikipedia.org/wiki/Dependency_injection) 集装箱 用于 Javascript/ Typescript. 这个图书馆的目标是 远离你的路 代码.

## 安装

### 为了在你的项目中作为包裹,

```bash
npm i @carlosv2/glue
```

## 使用量

简单地创建所需的 YAML 文件 。 这些文件会被收集起来堆放起来 组成单一集装箱服务。 注意文件的顺序 堆积起来非常重要,因为最新的文件将覆盖相撞的id.

每个 YAML 文件可以包含以下密钥的组合(它们都是可选的):

-   扩展
-   参数
-   服务

### 扩展

如果设定了, 此密钥必须包含一系列指向其他 YAML 文件的相对路径 . 装入器将装入这些路径,并将内容应用到文件 `extends` 键上显示的内容似乎已被宣布.

### 参数

如果设定了, 此密钥必须包含一个用于定义参数的密钥/ 值对象 其他参数和/或服务,或 [直接从容器取出](https://npmcn.com/package/%40carlosv2/glue/#readme-container)。 。 。 .

每个参数值可以用任意 [有效值](https://npmcn.com/package/%40carlosv2/glue/#readme-values)。 。 。 .

### 服务

如果设定了, 此密钥必须包含一个用于定义服务的密钥/ 值对象 其他参数和/或服务,或 [直接从容器取出](https://npmcn.com/package/%40carlosv2/glue/#readme-container)。 。 。 .

每个服务值必须是字符串或对象.

当一项服务被定义为字符串时,它被认为是别名. 这是服务 在字符串中指向服务点.

当服务被定义为对象时,需要下列密钥:

-   符号:强制性。 A 类 [价值](https://npmcn.com/package/%40carlosv2/glue/#readme-values) 生成对象
-   参数:可选. 清单 [数值](https://npmcn.com/package/%40carlosv2/glue/#readme-values) 与预期的论据顺序相同.
-   工厂:可选。 A 类 [价值](https://npmcn.com/package/%40carlosv2/glue/#readme-value) 导致符号对象中方法的名称.
-   财产:可选。 A 类 [价值](https://npmcn.com/package/%40carlosv2/glue/#readme-value) 导致符号对象中的属性名称.
-   电话:可选。 清单 [电话](https://npmcn.com/package/%40carlosv2/glue/#readme-call) 将按结果执行.
-   标记:可选。 与服务相关的标签的字符串列表 .
-   范围:可选。 此服务属于的有上下文名称的自由形式字符串 .

请记住 `factory` 财务报告和审定财务报表 `property` 键是相互排斥的.

## 数值

一个值是任何类型的数据(包括任何深度和阵列的对象). 他们也可以 运行时动态评估。 为了在运行时评价值,它们必须是: 定义为带有下列主要字符之一的字符串:

-   `<`:此返回关联服务 。 例如,以下YAML文件:
    
    ```yaml
    services:
      my.dependency:
        symbol: '(my/dependency.ts)~'
    
      my.service:
        symbol: '(my/service)~'
        args: ['<my.dependency']
    ```
    
    将注射 `my.dependency` 作为参数服务 `my.service` 服务.
-   `$`:此返回相关参数。 例如,以下YAML文件:
    
    ```yaml
    parameters:
      name: glue
    
    services:
      my.service:
        symbol: '(my/service)~'
        args: ['$name']
    ```
    
    将注射 `name` 作为参数到 `my.service` 服务.
-   `>`: 这返回包含给定标记的一系列服务。 例如,以下YAML文件:
    
    ```yaml
    services:
      my.child1:
        symbol: '(my/child1.ts)~'
        tag: ['children']
    
      my.child2:
        symbol: '(my/child2.ts)~'
        tag: ['children']
    
      my.parent:
        symbol: '(my/parent)~'
        args: ['>children']
    ```
    
    将解释为 `['<my.child1', '<my.child2']` 作为对 `my.parent` 服务.
-   `}`:此返回一个服务对象, 其中密钥为 ID, 值为例 .
    
    ```yaml
    services:
      my.child1:
        symbol: '(my/child1.ts)~'
        tag: ['children']
    
      my.child2:
        symbol: '(my/child2.ts)~'
        tag: ['children']
    
      my.parent:
        symbol: '(my/parent)~'
        args: ['}children']
    ```
    
    将解释为 `{'my.child1': '<my.child1', 'my.child2': '<my.child2'}` 作为对 `my.parent` 服务.
-   `%`:此返回环境变量。 它有这个格式 `%<name>[/<type>[/<fallback>]]` 其中:
    
    -   `name`: 环境变量的名称
    -   `type`: 键入 environemnt 变量将会被互通. 必须是:
        -   `s`字符串
        -   `b`:布尔
        -   `n`编号
    -   `fallback`: 找不到环境变量时的倒置值 例如,考虑到环境变量 `MY_VAR=4`,以下YAML文件:
    
    ```yaml
    parameters:
      var1: '%MY_VAR'
      var2: '%MY_VAR/n'
      var3: '%MY_VAR/n/5'
      var4: '%MY_OTHER_VAR'
      var5: '%MY_OTHER_VAR/n/5'
    ```
    
    将创建参数 `var1` 有数值 `'4'` (作为字符串) `var2` 有数值 `4` (数目), 页:1 `var3` 有数值 `4` (编号) `var5` 有数值 `5` (作为编号). 注意定义 页:1 `var4` 将产生例外,因为环境变量 `MY_OTHER_VAR` 无法找到.
-   `!`:此返回代码的评价 。 例如,以下YAML文件:
    
    ```yaml
    parameters:
      now: '!Date.now()'
    ```
    
    将创建参数 `now` 使用当前时间戳.
-   `(`:根据 [终止](https://npmcn.com/package/%40carlosv2/glue/#readme-terminations)。 。 。 .
-   `[`: 根据 [终止](https://npmcn.com/package/%40carlosv2/glue/#readme-terminations)。 。 。 . 这个 `*` 字符被允许作为单个目录的占位符,而 `**` 允许字符 作为任意数量嵌入目录的占位符.

服务定义也是有效的值,从而允许服务定义具有其他服务定义 被窝.

## 参数插值

字符串值允许有指向其他值的占位符. 这些占位符将进行评估 在运行时间中,并替换到它们指向的参数.

为了插入参数 占位符必须像这样被包围 `@{placeholder}`。 。 。 .

例如:

```yaml
parameters:
  library: glue
  opinion: '@{library} is awesome!'
```

当拉出 `option` 参数,容器将返回 `glue is awesome!`。 。 。 .

如果内插不可取,它可以用 `\`。 。 。 .

例如:

```yaml
parameters:
  placeholder: parameter
  message: 'You can replace any \@{placeholder} found in a @{placeholder}'
```

当拉出 `message` 参数,容器将返回 `You can replace any @{placeholder} found in a parameter`。 。 。 .

## 终止

使用时 `(` 财务报告和审定财务报表 `[` ,终止将确定 将导入的 :

-   没有终止: 将导入整个模块 。 例如,以下YAML文件:
    
    ```yaml
    parameters:
      obj: '(my/path.ts'
    ```
    
    将解释为 `import * as obj from 'my/path';`
-   `)`:将从模块中导入默认对象。 例如,以下YAML文件:
    
    ```yaml
    parameters:
      obj: '(my/path.ts)'
    ```
    
    将解释为 `import obj from 'my/path';`
-   `)<name>`: 将从模块中导入命名对象 。 例如,以下YAML文件:
    
    ```yaml
    parameters:
      obj: '(my/path.ts)MyObj'
    ```
    
    将解释为 `import { MyObj } from 'my/path';`
-   `)~`: 将导入文件中唯一导出的对象 。 如果输出对象超过一个, 会出现错误。 举例来说,如下: `my/path.ts` 文件 :
    
    ```ts
    function addition(a: number, b: number): number {
        return a + b;
    }
    
    export const value = addition(4, 5);
    ```
    
    然后,以下YAML文件:
    
    ```yaml
    parameters:
      obj: '(my/path.ts)~'
    ```
    
    将解释为 `import { value } from 'my/path';`
-   `)~<type>`: 将导入文件中唯一一个嵌入类型的导出对象 。 如果超过 1 请求类型的对象将导出, 错误将上升 。 目前只有 接受以下类型:
    
    -   `class`: 用于类
    -   `func`: 用于职能 举例来说,如下: `my/path.ts` 文件 :
    
    ```ts
    export function addition(a: number, b: number): number {
        return a + b;
    }
    
    export const value = addition(4, 5);
    ```
    
    然后,以下YAML文件:
    
    ```yaml
    parameters:
      obj: '(my/path.ts)~func'
    ```
    
    将解释为 `import { addition } from 'my/path';`

## 集装箱

容器物体采用下列方法:

-   `get<T = unknown>(id: string): Promise<T>`: 它返回由 `id`。 。 。 .
-   `getParameter<T = unknown>(id: string): Promise<T>`: 它返回参数 `id`。 。 。 .
-   `findServiceIdsByTag(tag: string): string[]`:它返回包含以下内容的服务标识列表: `tag`。 。 。 .

## 待办

以下是有待完成的任务清单:

-   [ ] 改进文件(增加装入相位器的文件)
-   [ ] 改进非汇编支持

## 常见问题

### @carlosv2/glue 是什么？

依赖性注射库,不碍事

### 如何安装 @carlosv2/glue？

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

### @carlosv2/glue 支持 TypeScript 吗？

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

### @carlosv2/glue 支持 ESM 还是 CommonJS？

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

### @carlosv2/glue 可以商用吗？

@carlosv2/glue 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @carlosv2/glue 的下载量有多少？

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

### @carlosv2/glue 还在维护吗？

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

