# @cratis/screenplay-language 中文文档

规范地址：https://npmcn.com/package/%40cratis/screenplay-language/

版本：6\.18\.0
npm 元数据更新时间：2026-11-10T21:38:51.930Z
中文译文更新时间：2026-11-10T23:18:11.669Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40cratis/screenplay-language
原文对照：https://npmcn.com/package/%40cratis/screenplay-language/?lang=original
项目主页：https://www.cratis.io/screenplay/
源码仓库：https://github.com/Cratis/Screenplay

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

- 包体积（解压后）：4.7 MB，785 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：monaco-editor \>=0\.44\.0
- 首次发布：2026-07-29T04:18:42.726Z
- 最新版本发布：2026-11-10T21:38:51.545Z
- 近 30 天下载量：34583（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：413（近 12 个月 413 个）

## 中文简介

摩纳哥语服务 Cratis Screenplay DSL——语法突出化,IntelliSense,徘徊和诊断.play文件

## 安装

```sh
npm install @cratis/screenplay-language
```

也可以使用：`pnpm add @cratis/screenplay-language`、`yarn add @cratis/screenplay-language`、`bun add @cratis/screenplay-language`

## README

# @ cratis/ 屏幕播放语言

为克拉蒂人提供摩纳哥语服务 **剧本** DSL (英语:`.play` )——语法突出,IntelliSense完成,悬浮文档,和诊断.

## 使用量

```typescript
import * as monaco from 'monaco-editor';
import { register } from '@cratis/screenplay-language';

register(monaco);
```

`register` 是单一的切入点。 登记 `screenplay` 语 文 (`.play` 、 完成和盘旋的提供者、 诊断监视员和 `screenplay-dark` 编号 : `screenplay-light` 摩纳哥主题,您通过. `monaco-editor` 这是一种对等依赖——一揽子方案从未捆绑摩纳哥.

```typescript
import { languageId, screenplayDarkThemeName, screenplayLightThemeName } from '@cratis/screenplay-language';

monaco.editor.create(element, {
    language: languageId,
    theme: screenplayDarkThemeName,
});
```

## 涵盖的内容

-   **突出显示** ——所有构造和条款关键词,切片类型,概念属性(`@pii`, (中文(简体) ), `@sensitive`),上下文变量(`$context.*`, (中文(简体) ), `$env.*`, (中文(简体) ), `$eventContext.*`, (中文(简体) ), `$.\*`),字符串,数字和注释.
-   **嵌入式代码块** —— 说 `csharp`, (中文(简体) ), `java`, (中文(简体) ), `typescript`, (中文(简体) ), `react`,以及 `html` 以摩纳哥自己的语言语法突出显示三重背书之间的块.
-   **分语言** - PDL (英语:`projection`)和CDL(英语:`capture`) 身体通过自己的注册规则,使用蒙纳克的状态堆栈来表示.
-   **完成情况** ——通过附加构造(顶级,模块,特征,切片,命令,生产,处理器,屏幕,约束等)来了解上下文,外加范围内符号名:政策后 `authorize`之后的事件 `on` 财务报告和审定财务报表 `produces`,在类型位置上的概念和原始,以及可解决的模块/特性目标 `depends on`,将已宣布的目标排除在外.
-   **缓冲** ——关键字文档,概念定义(primitive +属性),政策需要表达式,以及事件属性列表.
-   **诊断** ——未知的切片类型,未知的原始类型,引用未申报的政策与事件,标签缩进,以及未关闭的代码栅栏. 每个都带着编译器的 `PLAY` 代码(`diagnosticCodes`),所以同一病情的分泌和CLI诊断是同一种代码.

## 快速修正

已注册的代码动作提供者会针对当前缓冲提供经核实的编辑:

-   `PLAY0479`: 替换一个遗产 `?` 后缀为 `optional`,或移动文档.
-   `PLAY0471`: 删除冗余事件 `id` 线条。 拖放的注释无法删除.

重复的ID去除工作在放置和多文档应用中. 行动尊重要求的诊断和类型,每个模型版本的缓存分析, 并按该版本编辑。 区域请求返回每个符合条件的交叉事件,不重复 行动。 每个版本一并核查独立食谱,以检查预定的食谱 语法变化和诊断去除,而不对每个标记进行回放;没有.NET进程 所需经费。 见 [编辑器快速修正](https://npmcn.com/Documentation/screenplay/vscode.md#event-quick-fixes) 对于多余的id去除行为.

## 用新子语言扩展

```typescript
import { registerSubLanguage } from '@cratis/screenplay-language';

registerSubLanguage('workflow', {
    tokens: [[/\b(?:start|step|end)\b/, 'keyword']],
    completions: [{ label: 'step', insertText: 'step ${1:Name}', documentation: 'A workflow step.' }],
    hovers: { step: 'Workflow — a step executed in sequence.' },
});
```

登记工作前后 `register(monaco)`;活化器在苍蝇上重构. 见 [分语言文档](https://npmcn.com/Documentation/screenplay/sub-languages.md) 完全设计.

## 大楼

```shell
yarn build
```

已公布的运行时间是 ES 模块图 `dist/bundles/`,不共享 预建块 。 根,捕捉和投影入行路径不变. 私有编译器模块作为相对文件在 `dist/bundles/compiler/`· ; 消费者不需要安装 `@cratis/screenplay-compiler`消费者可以 使用自己的捆绑器配置来分割这些模块. 可调用名称、微缩和源地图得到保存.

`check-package.mjs` 检查包装的柏油球, 解决每一个公开进入 只安装了宣布的对等器,并打印了十个最大的模块,总运行时间 字节和消费者导入的最小大小 `register`, (中文(简体) ), `languageId`,以及 `screenplayDarkThemeName`。运行时大小不包括声明和源地图.

### 运行时间规模预算

-   每个已发布的 JavaScript 文件必须是 **500 000字节**。这是消费者 块预算,从未增加; 分割模块图,而不是增长 预建块 .
-   整个运行时间必须是 **1 000 000字节**。本上限核准语言 在这一限度内增长,同时防范供应商依赖。 增长 除了在审查模块分解后需要明确核准外, 而不是自动提高每个发行量的上限。 摩纳哥仍然对外开放.
-   消费者的最后块块仍然取决于其捆绑者的分块配置; 模块图不能保证单个捆绑消费者留在 50万字节.

模块- 图形构建初始显示 **199个JavaScript文件共计752 551个 字节**它的十大单元是:

| 模块(与 `dist/bundles/`(中文(简体) ) | 字节 |
| --- | --: |
| `completion-items.js` | 41,933美元 (单位:千美元) |
| `compiler/Syntax/SyntaxCollections.js` | 29,257 (中文(简体) ) |
| `keyword-docs.js` | 23 414 个 |
| `compiler/Syntax/ScreenplaySyntaxWalker.js` | 20 450个 |
| `compiler/Parsing/SpecificationParser.js` | 19,931 (英语) |
| `compiler/Diagnostics/DiagnosticCodes.js` | 14 235个 |
| `sub-languages/projection/CompletionProvider.js` | 13 391个 |
| `event-source-authoring.js` | 12 877个 |
| `validation.js` | 12 806个 |
| `compiler/Parsing/ScreenParser.js` | 12 351个 |

包装的消费者烟雾 进口捆绑 **601,682 字节** 作为单一 与摩纳哥外部的精密模块。 分解包含没有打印机或 MCP-唯一出处模块. 语法序列化初始化仍然被拉动 通过编译器桶导出; 删除它需要单独检查行为 编译器导入清理, 而不是从编辑器中丢弃 parser 校验器 .

`yarn test:pack` 此外,还进行尺寸检查,并进行人种超大 模块。 警卫必须拒绝它,并点出它公布的路径.

## 常见问题

### @cratis/screenplay-language 是什么？

摩纳哥语服务 Cratis Screenplay DSL——语法突出化,IntelliSense,徘徊和诊断\.play文件

### 如何安装 @cratis/screenplay-language？

在项目目录运行 npm install @cratis/screenplay-language，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：monaco-editor（\>=0\.44\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @cratis/screenplay-language 支持 TypeScript 吗？

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

### @cratis/screenplay-language 支持 ESM 还是 CommonJS？

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

### @cratis/screenplay-language 可以商用吗？

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

### @cratis/screenplay-language 的下载量有多少？

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

### @cratis/screenplay-language 还在维护吗？

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

