# @christianwiedemann/drupal-twig-extensions 中文文档

规范地址：https://npmcn.com/package/%40christianwiedemann/drupal-twig-extensions/

版本：2\.0\.0-beta\.3
npm 元数据更新时间：2025-09-30T12:13:06.689Z
中文译文更新时间：2026-11-09T15:06:04.903Z
软件包许可：\(MIT OR GPL-2\.0-only\)

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

原始 npm 页面：https://www.npmjs.com/package/%40christianwiedemann/drupal-twig-extensions
原文对照：https://npmcn.com/package/%40christianwiedemann/drupal-twig-extensions/?lang=original
项目主页：https://github.com/KEY-TEC/drupal-twig-extensions
源码仓库：https://github.com/KEY-TEC/drupal-twig-extensions

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

- 包体积（解压后）：145 kB，152 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：未声明
- 运行依赖：4 个
- 首次发布：2025-07-25T22:37:24.410Z
- 最新版本发布：2025-09-30T12:13:06.525Z
- 近 30 天下载量：4112（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：3（近 12 个月 0 个）

## 中文简介

JavaScript 执行 Drupal 的 Twig 扩展

## 安装

```sh
npm install @christianwiedemann/drupal-twig-extensions
```

也可以使用：`pnpm add @christianwiedemann/drupal-twig-extensions`、`yarn add @christianwiedemann/drupal-twig-extensions`、`bun add @christianwiedemann/drupal-twig-extensions`

## README

# ![drupal-twig-extensions](https://npmcn.com/package/%40christianwiedemann/drupal-twig-extensions/drupal-twig-extensions.png)

## Drupal 用于 JavaScript 的 Twig 扩展

[![Node.js CI Status](https://github.com/JohnAlbin/drupal-twig-extensions/actions/workflows/node.js.yml/badge.svg)](https://github.com/JohnAlbin/drupal-twig-extensions/actions/workflows/node.js.yml) [![Coverage Status](https://coveralls.io/repos/github/JohnAlbin/drupal-twig-extensions/badge.svg?branch=main)](https://coveralls.io/github/JohnAlbin/drupal-twig-extensions?branch=main)

Drupal 开发者通常使用样式引导工具来记录/播放项目的前端组件. 这些风格引导工具大多用JavaScript来编写,并且不易与Twig中的PHP代码相融合. 幸运的是,Twig有两个不同的港口进入了JavaScript, [Wig.js](https://github.com/twigjs/twig.js/) 财务报告和审定财务报表 [旋转](https://github.com/NightlyCommit/twing)。 。 。 .

这个工程是Drupal 9的Twig扩展的JavaScript端口,用于Twig.js或Twing.

## 安装

为了让这个项目成功,你 **必须安装 Twig.js 或 Twing** 。 。 。 .

安装 Twig.js : `npm install --save-dev twig`

要安装 Twing : `npm install --save-dev twing`

然后用 :  
`npm install --save-dev drupal-twig-extensions`

## 使用量

在你的Twig模板中,只要遵循下面的集成代码就可以像这样使用Drupal扩展:

```twig
{{ 'Hello World!'|drupal_escape }}
```

### Twig.js 1.15.0 或晚点

如果你使用Twig.js和 `import` 语句(即 ES 模块语法) 在您的 JavaScript 中, 使用以下 JavaScript 与 Twig 集成 :

```javascript
import Twig from 'twig';
import { addDrupalExtensions } from 'drupal-twig-extensions/twig';

// Add the extensions for Drupal.
addDrupalExtensions(Twig, {
  // Optionally, set options to configure how the Drupal
  // extensions should behave. See "Options" below for
  // details.
});
```

如果你使用Twig.js和 `require` 在您的 JavaScript 中, 语句( 即 commonJS 语法), 使用以下 JavaScript 与 Twig 整合 :

```javascript
const Twig = require('twig');
const { addDrupalExtensions } = require('drupal-twig-extensions/twig');

// Add the extensions for Drupal.
addDrupalExtensions(Twig, {
  // Optionally, set options to configure how the Drupal
  // extensions should behave. See "Options" below for
  // details.
});
```

### 转会5.1.0或后会

如果你使用Twing和 `import` 在您的 JavaScript 中的语句( 即 ES 模块语法), 使用以下 JavaScript 与 Twing 集成 :

```javascript
import { TwingEnvironment, TwingLoaderRelativeFilesystem } from 'twing';
import { addDrupalExtensions } from 'drupal-twig-extensions/twing';

// Create an instance of the Twing Environment.
const twingEnvironment = new TwingEnvironment(
  new TwingLoaderRelativeFilesystem(),
);

// Add the extensions for Drupal.
addDrupalExtensions(twingEnvironment, {
  // Optionally, set options to configure how the Drupal
  // extensions should behave. See "Options" below for
  // details.
});

// If you use twing-loader, it will need access to the same
// twing environment.
export default twingEnvironment;
```

如果你使用Twing和 `require` 在您的 JavaScript 中, 使用以下 JavaScript 语句( 即 commonJS 语法) 与 Twing 整合 :

```javascript
const { TwingEnvironment, TwingLoaderRelativeFilesystem } = require('twing');
const { addDrupalExtensions } = require('drupal-twig-extensions/twing');

// Create an instance of the Twing Environment.
const twingEnvironment = new TwingEnvironment(
  new TwingLoaderRelativeFilesystem(),
);

// Add the extensions for Drupal.
addDrupalExtensions(twingEnvironment, {
  // Optionally, set options to configure how the Drupal
  // extensions should behave. See "Options" below for
  // details.
});

// If you use twing-loader, it will need access to the same
// twing environment.
module.exports = twingEnvironment;
```

### 添加 DrupalExtension () 的选项

通常,这些扩展会从德鲁帕尔本身得到它们的配置. 由于这是 JavaScript 环境, 您需要自己提供一些配置; 只要在第二个参数中添加指定的属性 `addDrupalExtensions`。 。 。 .

```javascript
addDrupalExtensions(twigOrTwing, {
  // Set the active theme's machine name; defaults to 'stark'.
  active_theme: 'zen',

  // Set the active theme's path. Uses the active_theme name
  // to determine the default value. Core themes default to
  // 'core/themes/[active_theme]'. Other themes default to
  // 'themes/custom/[active_theme]'.
  active_theme_path: 'themes/contrib/zen',

  // Set the base_url of the Drupal install; defaults to '/'.
  base_url: '/',

  // Override any of Drupal's default stream wrappers.
  // Or add your own stream wrappers; new stream wrappers will
  // be merged with the default ones.
  streamWrapper: {
    'public://': 'sites/default/files',
    'private://': 'sites/default/private',
    'temporary://': 'sites/default/tmp',
  },

  // Override any of Drupal's default date_format patterns.
  // Or add your own custom formats; new formats will be
  // merged with the default ones.
  date_format: {
    long: 'Y-m-d H:i:s',
  },
});
```

如果您不想指定任何配置选项,可以跳过第二个参数. 像这样:

```
addDrupalExtensions(twigOrTwing);
```

## 执行详情

### 过滤器

这个 [过滤器的官方列表在 Drupal 9 的代码中](https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Template%21TwigExtension.php/function/TwigExtension%3A%3AgetFilters/9) 说明 [Drupal 的 Twig 过滤文档](https://www.drupal.org/docs/theming-drupal/twig-in-drupal/filters-modifying-variables-in-twig-templates)。 。 。 .

-   `clean_class`
-   `clean_id`
-   `drupal_escape`
-   `format_date`
-   `placeholder`
-   `render`1个
-   `safe_join`
-   `t`2个
-   `trans`2个
-   `without`

1个 这个 `render` 过滤器与它在 Drupal 中的功能不同; 它只是将输入返回到字符串中 `toString` 方法。 它的被实施是为了在Twig模板中使用这个 Drupal 特定过滤器时防止Twig 编译被打破.

2个 这些滤波器与Drupal的功能不同;它们只是不作修改地返回输入. 它们的实施是为了防止Twig编译在Twig模板中使用这些Drupal特定过滤器时被打破.

### 职能

这个 [正式的函数列表在 Drupal 9 的代码中](https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Template%21TwigExtension.php/function/TwigExtension%3A%3AgetFunctions/9) 说明 [Drupal 的 Twig 函数文件](https://www.drupal.org/docs/theming-drupal/twig-in-drupal/functions-in-twig-templates)。 。 。 .

-   `active_theme`
-   `active_theme_path`
-   `attach_library`3个
-   `create_attribute`
-   `file_url`
-   `link`
-   `path`2个
-   `render_var`1个
-   `url`2个

1个 见 [上文关于 `render` 过滤器](https://npmcn.com/package/%40christianwiedemann/drupal-twig-extensions/#readme-render-note)。 。 。 .

2个 这些功能与德鲁帕尔的功能不同;它们只是不作修改地返回输入. 它们的实施是为了防止Twig编译在Twig模板中使用这些Drupal特定功能时被打破.

3个 此函数在 Drupal 中并不相同; 它只是返回一个空字符串 。 它的被执行是为了在Twig模板中使用这个 Drupal 特定功能时防止Twig 编译被打破.

### 标记

注:该项目尚未实施标记.

这个 [官方标签列表在 Drupal 9 的代码中](https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Template%21TwigExtension.php/function/TwigExtension%3A%3AgetTokenParsers/9)。 。 。 .

-   `trans`, (中文(简体) ), `plural`,以及 `endtrans`: 这些标签在 [Drupal的 " Twig模板翻译 " 文件](https://www.drupal.org/docs/8/api/translation-api/overview#s-translation-in-twig-templates)。 。 。 .

### 测试和操作员

Drupal 9目前没有执行任何自定义的Twig测试或Twig操作器.

## 常见问题

### @christianwiedemann/drupal-twig-extensions 是什么？

JavaScript 执行 Drupal 的 Twig 扩展

### 如何安装 @christianwiedemann/drupal-twig-extensions？

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

### @christianwiedemann/drupal-twig-extensions 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/christianwiedemann\_\_drupal-twig-extensions 是否存在。

### @christianwiedemann/drupal-twig-extensions 支持 ESM 还是 CommonJS？

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

### @christianwiedemann/drupal-twig-extensions 可以商用吗？

@christianwiedemann/drupal-twig-extensions 使用 \(MIT OR GPL-2\.0-only\) 许可。可在 MIT、GPL-2\.0 中任选其一遵守。选择 MIT 时，宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @christianwiedemann/drupal-twig-extensions 的下载量有多少？

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

### @christianwiedemann/drupal-twig-extensions 还在维护吗？

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

