# @civictheme/drupal-attribute 中文文档

规范地址：https://npmcn.com/package/%40civictheme/drupal-attribute/

版本：2\.1\.0
npm 元数据更新时间：2026-10-31T03:11:00.742Z
中文译文更新时间：2026-11-09T22:40:00.849Z
软件包许可：Apache-2\.0

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

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

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

- 包体积（解压后）：54 kB，11 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=20
- 运行依赖：0 个
- 首次发布：2026-08-04T12:07:47.130Z
- 最新版本发布：2026-10-31T03:11:00.566Z
- 近 30 天下载量：3348（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：3（近 12 个月 3 个）

## 中文简介

在 JavaScript 中模拟 Drupal 属性 .

## 安装

```sh
npm install @civictheme/drupal-attribute
```

也可以使用：`pnpm add @civictheme/drupal-attribute`、`yarn add @civictheme/drupal-attribute`、`bun add @civictheme/drupal-attribute`

## README

# drupal 属性

[![NPM version](https://badge.fury.io/js/@civictheme%2Fdrupal-attribute.svg)](https://npmjs.org/package/@civictheme/drupal-attribute)

**这是叉子 [drupal 属性](https://gitlab.com/nightlycommit/drupal-attribute) 以 [埃里克·莫兰德](https://gitlab.com/nightlycommit),由 [公民主题](https://github.com/civictheme)原执行的所有功劳都属于上游作者.**

这不是 [drupal 属性](https://npmjs.org/package/drupal-attribute)。这是 _项目_ 后面 [drupal 属性](https://npmjs.org/package/drupal-attribute)。 。 。 .

## 使用树枝.js

`createAttribute()` 是Twig-facing的入口,相当于德鲁帕尔的 `create_attribute()`用树枝来注册:

```js
import Twig from 'twig';
import { createAttribute } from '@civictheme/drupal-attribute';

Twig.extendFunction('create_attribute', createAttribute);
```

twig.js 戳出每个对象的文字 从模板中编译的自有, 可假设 `_keys` 数组记录作者的密钥顺序. **收藏来自 此软件包从不制作**,无论你建造它与 `createAttribute()`, (中文(简体) ), 构造器,或 `setAttribute()` - 所以没有消费者需要剥去它.

什麽 `createAttribute()` 添加是命令 。 这个 `create_attribute` 运输商 [`drupal-twig-extensions`](https://github.com/JohnAlbin/drupal-twig-extensions) 绘制地图 `Object.keys()`中返回 错误的顺序——像整数的键向前悬挂,并有树枝. js 表达式 堆栈指定其他不正确 :

```twig
<button{{ create_attribute({'data-slider-previous': '', 'class': 'btn'}) }}></button>
```

```html
<!-- drupal-twig-extensions -->
<button class="btn" data-slider-previous=""></button>

<!-- createAttribute -->
<button data-slider-previous="" class="btn"></button>
```

`createAttribute()` 读取 `_keys` 因此输出匹配什么 德鲁帕尔的 PHP `Attribute` 用于同一模板。 无带的物体 `_keys` - 从渲染语境中达到功能的任何东西,而不是 从模板字面上 —— 保留自己的点数顺序 .

上游跟踪与 [drupal-twig-延伸号# 1](https://github.com/JohnAlbin/drupal-twig-extensions/issues/1)。 。 。 . 请注意: `addDrupalExtensions(Twig)` 运行每个编译的 Twig 模块导入 并重新登记自身的实施,因此取决于模块评价顺序 您可能需要通过一个包装簿而不是在启动时一次性注册 :

```js
const extendFunction = Twig.extendFunction.bind(Twig);

Twig.extendFunction = (name, definition) =>
  extendFunction(name, name === 'create_attribute' ? createAttribute : definition);

Twig.extendFunction('create_attribute', createAttribute);
```

## 先决条件

-   20及以上节点
-   [滚动](https://www.npmjs.com/package/rollup) 全球安装

还建议在全球安装下列工具,以方便编写测试和跟踪编码覆盖范围:

-   [数字](https://www.npmjs.com/package/one-double-zero)
-   [tx](https://www.npmjs.com/package/tsx)

## 安装

项目可以通过运行以下命令来安装:

```shell
npm install
```

## 使用量

### 构建测试套件

```shell
npm run build:test
```

此命令将测试套件输出到目录 `src/test/target`。 。 。 .

### 执行测试套件

测试套件可以通过运行以下命令来执行:

```shell
node src/test/target/index.mjs
```

或者,为了方便:

```shell
npm t
```

### 建造主要文物

主要文物可通过以下运行命令来建造: artifact

```shell
npm run build:main
```

此命令将主要文物输出到目录 `src/main/target`,在版本下 `SNAPSHOT`。 。 。 .

该版本可通过充入 `VERSION` 因此,环境变量:

```shell
VERSION=1.2.3 npm run build:main
```

### 释放

npm 出版需要一个交互式的 OTP , 现在代号不再绕行 2FA,所以释放从维护机运行而不是CI:

```shell
git checkout main
git pull
npm ci
npm run lint
npm run typecheck
npm test
npm version minor -m "Released version v%s."   # or patch / major
npm publish --access public --tag latest
git push origin main --follow-tags
gh release create vX.Y.Z --title vX.Y.Z --notes-file RELEASE-NOTES-X.Y.Z.md
```

### 撰写和执行测试

假设要执行位于 `src/test/foo/bar.ts`,一个会运行:

```shell
tsx src/test/foo/bar.ts
```

甚至有可能----并建议----在写作测试时跟踪覆盖范围:

```shell
odz tsx src/test/foo/bar.ts
```

当然,也完全有可能 将测试结果 管道到你最喜欢的自带物:

```shell
src/test/foo$ tsx bar.ts | tap-nyan
 9   -_-_-_-_-_,------,
 0   -_-_-_-_-_|   /\_/\ 
 0   -_-_-_-_-^|__( ^ .^) 
     -_-_-_-_-  ""  "" 
  Pass!
```

## 捐款

-   叉头 [此寄存器](https://github.com/civictheme/drupal-attribute)
-   代码
-   使用 [磁带](https://github.com/substack/tape)
-   发出拉动请求,同时铭记所有拉动请求必须在问题队列中提及一个问题

## 许可证

阿帕奇-2.0 © [埃里克·莫兰德](https://gitlab.com/nightlycommit)

由 CivilTheme 贡献者修改了原始项目的文件 自2025年以来。 请参看承诺历史中关于变化的全部列表.

## 常见问题

### @civictheme/drupal-attribute 是什么？

在 JavaScript 中模拟 Drupal 属性 \.

### 如何安装 @civictheme/drupal-attribute？

在项目目录运行 npm install @civictheme/drupal-attribute，或使用 pnpm add / yarn add / bun add。

### @civictheme/drupal-attribute 支持 TypeScript 吗？

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

### @civictheme/drupal-attribute 支持 ESM 还是 CommonJS？

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

### @civictheme/drupal-attribute 需要什么版本的 Node\.js？

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

### @civictheme/drupal-attribute 可以商用吗？

@civictheme/drupal-attribute 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @civictheme/drupal-attribute 的下载量有多少？

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

### @civictheme/drupal-attribute 还在维护吗？

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

