@cratis/screenplay-language

中文文档
6.18.0发布于 2026/11/11MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 3.5万

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

中文使用文档
文档目录6 节
  1. 使用量
  2. 涵盖的内容
  3. 快速修正
  4. 用新子语言扩展
  5. 大楼
  6. 运行时间规模预算

@ cratis/ 屏幕播放语言

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

使用量

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

register(monaco);

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

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进程 所需经费。 见 编辑器快速修正 对于多余的id去除行为.

用新子语言扩展

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);活化器在苍蝇上重构. 见 分语言文档 完全设计.

大楼

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.js41,933美元 (单位:千美元)
compiler/Syntax/SyntaxCollections.js29,257 (中文(简体) )
keyword-docs.js23 414 个
compiler/Syntax/ScreenplaySyntaxWalker.js20 450个
compiler/Parsing/SpecificationParser.js19,931 (英语)
compiler/Diagnostics/DiagnosticCodes.js14 235个
sub-languages/projection/CompletionProvider.js13 391个
event-source-authoring.js12 877个
validation.js12 806个
compiler/Parsing/ScreenParser.js12 351个

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

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

版本与发布记录

@cratis/screenplay-language 共发布 413 个版本,首次发布于 2026/07/29;过去 12 个月发布了 413 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
6.18.0latest2026/11/11今天
6.17.02026/11/11今天
6.16.02026/11/10今天
6.15.02026/11/10今天
6.14.02026/11/10今天
6.13.02026/11/10今天

关于 @cratis/screenplay-language 的常见问题

@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 和提交记录判断。