@emulsify/core

中文文档
4.5.2发布于 2026/11/05GPL-2.0ES Module构建来源已验证近 30 天下载 5711

装订用于故事本开发+Vite 构建的工具

中文使用文档
文档目录14 节
  1. 如何浓缩核心工作
  2. 节点.js 运行时政策
  3. 项目演变
  4. 作者模式
  5. 安装和工程设置
  6. 手动设置 与 npm 关系
  7. 以乳化 CLI 精简设置
  8. 文档
  9. 已知的限制
  10. 支持的工程形状
  11. 公共进口
  12. 捐款
  13. 链接
  14. 作者

Emulsify Core Design System

浓缩核心

整个组成部分建筑设计系统的开源基础 图书馆、CMS主题、故事书以及设计和 发展.

浓缩核心 提供共享 维特 构建配置 (单位:千美元) 故事书 组件驱动的工作空间 与 Twig 、 React 和 自主自定义元素一起开发.

如何浓缩核心工作

Emulsify Core是Emulsify项目的共享前端层. 它给团队 用于构建、记录和测试组件,同时离开特定平台 具体执行方式属于何处.

  • Vite 构建项目 JavaScript, Sass/CSS, Twig 模板, 组件元数据, 和静态组件资产.
  • 故事书运行在React/Vite框架上.
  • Twig 文件通过基于 React 的 Story Book 渲染 renderTwig()。 。 。 .
  • 反应组件通过Storybook的标准反应支持渲染.
  • 在故事书中通过 renderWebComponent()。 。 。 .
  • Twig, React, 和自定义元素故事可以一起生活在一个故事书中 工作空间.
  • project.emulsify.json 是平台和结构的真相来源 配置 .
  • 平台适配器控制CMS的特定行为而不是假设 在全球.

节点.js 运行时政策

  • 消费者在"节点"(Node.js 24.13.0)或后期得到支持. 最严格的出版 工具链依赖, stylelint-selector-bem-pattern 5,需要补丁.
  • 贡献者应使用节点24.18.0,准确的版本被钉入 .nvmrc。 。 。 .
  • 释放准备情况调查在公众24.13.0层和建议的层上进行 24.1.8.0版本. 其他 CI 和发布任务从 .nvmrc。 。 。 .

项目演变

Emulsify Core最初是作为共享的Webpack和故事书工具而开始的,采用无害环境管理方法的 3.x,并改用"Vite and React"/"Vite Story Book"在4.x. 目前的项目 模型支持 CMS 主题,独立组件库,以及混合 Twig, 反应,和自定义元素"故事书"工作空间.

见 版本进化 主要版本历史 编辑 4.3.0 释放说明 兼容性 修改和增加的版本.

这个 兼容性和支助政策 将当前要求和现有的4.x兼容规则与 维护承诺。 待决决定生活在 维护者登记册。 。 。 .

作者模式

Emulsify Core 支持 Twig 和 React 作者工作流程加焦点 使用自定义元素所建的网络组件的故事书适配器. 这个 正确的选择取决于如何使用设计系统.

  • 使用 Twig 用于 CMS 主题和服务器的模板系统. 德鲁帕尔有一个 Drupal 特定适配器, WordPress/ Timber 工程可以使用 故意中立 wordpress 适配器. WordPress 运行时集成 属于 emulsify-wordpress-theme。 。 。 .
  • 对独立的UI库、应用程序组件或项目使用React 已经使用 React .
  • 使用自定义元素构建的网页组件 符合适配器所记录的框架中性浏览器组件 属性、属性、默认位置和本地事件边界.
  • 当设计系统需要记录 CMS 时使用混合写作, 框架和框架中立的组件 举个例子.

见 组件撰写 用于 Twig, React,自定义 元素,混合故事书,以及共享 Sass 实例.

安装和工程设置

Emulsify Core可以通过两种共同的方式进入一个项目. 两者都得到支持,两者都得到支持 无效。 正确的设置路径取决于您是否将 Core 连接到 投影或从 Emulsify 启动器开始.

手动设置 与 npm 关系

要将 Emulsify Core 添加到一个已有的工程, 即自定义时使用 npm 启动器,或拥有自身设置决定的项目.

npm install @emulsify/core

每个项目都应提供 project.emulsify.json 在工程根处的文件 :

{
  "project": {
    "platform": "none",
    "name": "example",
    "machineName": "example"
  },
  "assets": {
    "roots": ["./design/assets"]
  }
}

从默认资产根和任何额外的根中发现资产文件 配置于 project.emulsify.json项目存储时使用资产根 字体、图像、图标或其他默认位置外的静态文件.

常见的项目脚本将共享的 Emulsify Core Vite 和 故事本配置 :

  • storybook:开始故事书的开发.
  • storybook-build:构建静态故事书输出.
  • build:运行 JS, CSS 的 Vite 构建, 复制 Twig 模板, 组件 元数据和静态组件资产.
  • lint: lints 维护了项目源.

以乳化 CLI 精简设置

使用 放大CLI 当你 想要由启动器驱动的设置, 并带有项目脚手架、启动钩、 系统 安装和组件生成.

在全球安装CLI:

npm install -g @emulsify/cli

然后从启动器初始化一个项目 :

emulsify init "My Project" ./path/to/projects --platform none

全球或直接的 CLI 安装仍然是支持运行的方式 emulsify init 在项目存在之前。 对于核心4.x兼容性,项目 安装 @emulsify/core 还接受当地项目 emulsify 二进制 通过核心 @emulsify/cli 依赖性。 本地二进制可以用 npx --no-install emulsify --help; 它是现有兼容桥 核心消费者,而不是选择明确的CLI安装的替代品 当脚手架 一个新的项目.

CLI 支持内置 drupal, (中文(简体) ), wordpress,以及 none 平台。 它会 创建启动项目,安装组件系统,列出可用的组件, 安装系统组件,并生成本地组件。 启动者拥有 项目结构和脚本; Emulsify Core 仍然提供共享构建和 故事书基础下面.

文档

文件按任务分列:

专题使用此选项时
版本进化了解Emulsy Core如何在主要释放中演变.
组件撰写选择twig,React,自定义元素,或混合故事书编写和比较组件示例.
故事书渲染出特维格和自定义元素故事,使用"故事书"帮助,并混合了编剧模型.
项目结构和输出配置 src/components词根 ./components, (中文(简体) ), variant.structureImplementations,和预期输出路径.
平台适配器谅解 none, (中文(简体) ), wordpress, (中文(简体) ), drupal,平台解析令,以及Drupal SDC行为.
扩展点添加 Vite 插件, Tailwind CSS, Storybook 预览功能,以及其他框架工具.
扶养合同理解为什么生成的主题依赖于 Core 运行时的依赖和 npm 升起 .
业绩了解源图,急切地Twig导入,Tailwind扫描,复制文件,以及固定验证.
原生树枝扩展使用 bem(), (中文(简体) ), add_attributes(),以及 switch/case/default/endswitch 在Twig.js (英语).
构成部分检查员确认列名 Twig 组件模板,精确的引用,短手相撞,以及预期的输出路径.
项目审计运行人机或版本JSON项目审计并配置CI故障阈值.
释放核查运行4.x放行检查,柏油丸烟检测,和语义放行干行后再发布.
释放拉动请求审查审查独立的API的大型放出拉取请求,运行时间,消费者,可访问性和放出风险.
迁移到 4.x在保留现有结构的同时,提升一个预-4.x/Webpack项目.
4.3.0 发布说明审查4.3.0范围、兼容性变化、公共API、限制和核查证据.
4.3.1 发布说明审查 4.3.1 开发记者的变化、动词控制以及范围限制.
4.4.0 发布说明审查资产分辨率、更安全的审计修正、增量产出、记者变动和公布证据.

已知的限制

Emulsify Core有意专注于共享的建筑和故事书层. 一些集成工作仍然属于项目、启动器、主题或平台 软件包.

  • 已执行的平台适配器为: none, (中文(简体) ), wordpress,以及 drupal编辑 wordpress 适配器是有意中性的: 它支持 Core Twig 编写, 故事书,维特, bem(), (中文(简体) ), add_attributes(), (中文(简体) ), include(),以及 source()不过 它不会模仿 WordPress 或 Timber PHP 运行时的行为 。 运行时间 集成属于 emulsify-wordpress-theme。见 平台适配器。 。 。 .
  • Storybook 急切地导入编译出用于同步渲染的 Twig 模块, 原始 Twig 和文本资产来源在 source() 请求 他们。 大块 Twig 图书馆仍应保留 Storybook 源代码 有意为之. 见 业绩。 。 。 .
  • 项目扩展使用公众 config/emulsify-core 目录 : config/emulsify-core/vite/plugins.* 对于维特, config/emulsify-core/storybook/... 故事书 config/emulsify-core/a11y.config.js 为11y。 见 扩展点。 。 。 .
  • Webpack 特定定制必须手动迁移到 Vite 插件或 extendConfig()。见 移徙。 。 。 .
  • Drupal SDC 镜像只在 Drupal 适配器和 SDC 设置时适用 启用 . none 财务报告和审定财务报表 wordpress 项目应预期产出将留在 dist/。见 平台适配器。 。 。 .
  • 生成仅依赖于的主题 @emulsify/core 假设 npm 的平地 node_modules 为脚本二进制和共享配置套件而起. {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}嗯 不错 {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}嗯 孤立的链接器和 Yarn Plug'n'Play 不支持此单依赖性 生成主题模式,除非耗用项目宣布每个工具 软件包本身。 见 扶养合同。 。 。 .
  • 用于自定义元素的故事手册渲染器支持自定义元素, 用于未命名的默认插槽的轻度 DOM 儿童, 并明确绘制本地地图 事件。 它不提供命名槽构成 API 或支持 定制内置元素. 见 故事书。 。 。 .

支持的工程形状

Emulsify Core旨在满足项目所在位置. 这些项目形状 已支持:

  • 利用 src/components。 。 。 .
  • none 平台 使用 src/components。 。 。 .
  • wordpress 平台 使用 src/components。 。 。 .
  • 根号 ./components 项目.
  • 使用多个项目 variant.structureImplementations。 。 。 .
  • 与Twig,React,以及自定义元素的混合故事书项目.

WordPress和木材项目应使用 platform: "wordpress" 当他们想要 核心的中性WordPress适配器. 适配器保持输出 dist/,负载 故事本 CSS 来自 dist/**/*.css,然后将 WordPress 运行时的行为留给 emulsify-wordpress-theme。 。 。 .

公共进口

浓缩核心暴露了稳定的公共软件包路径,因此不消耗项目 需要访问内部文件 :

import { renderTwig } from '@emulsify/core/storybook';
import {
  defineCustomElement,
  renderWebComponent,
} from '@emulsify/core/storybook';
import { registerTwigExtensions } from '@emulsify/core/extensions/twig';
import { defineReactExtension } from '@emulsify/core/extensions/react';

defineReactExtension 用于未来的反应扩展支持。 这个 目前返回输入时没有改变。 采用导入路径是安全的 在登记之前,运行时间是故意不开放的。 见 扩展点。 。 。 .

Vite 消费者可以从 @emulsify/core/vite公开 来自 Vite 插件助手 @emulsify/core/vite/plugins,和平台适配器 帮助者来自 @emulsify/core/vite/platforms。 。 。 .

defineCustomElement() 财务报告和审定财务报表 renderWebComponent() 使用现有的 @emulsify/core/storybook 切入点;不需要专用包 子路径。 生成的 Twig 资产源运行时间是内部的,不是 公共软件包导出 .

捐款

捐款应使下一个在其中工作的人的代码库保持清晰. 维护的 JavaScript 源、 配置、 脚本和测试应当使用一致 注释 :

  • 以一个简短的JSDoc文件块启动每个维护的JS文件,以解释文件的责任.
  • 使用 JSDoc 块进行输出功能、复杂的帮助者和公共合同.
  • 使用 // 用于本地意图,相容行为,以及非明显边缘大小写的评论.
  • 评论要简明扼要。 更倾向于解释为什么存在行为而不是重述代码.
  • 在工作流程,钩子中使用YAML或 shell注释,在格式支持注释的地方使用固定文件.

不在 JSON 文件、 锁文件、 二进制资产、 生成输出中添加注释 , 法律文件或依赖文件。 这些格式也不支持 评论或应保留确切的文物.

还请遵循所提供的问题模板和拉动请求模板. 下面的问题链接是针对普通错误和特性请求的,而不是 机密弱点细节。 见 安全报告情况 在编制安全报告之前.

  1. 乳化德鲁帕尔
  2. 乳化工具( Drupal 模块)

作者

Emulsify 是一个产品,由 四个厨房。 。 。 .

版本与发布记录

@emulsify/core 共发布 53 个版本,首次发布于 2024/06/08;过去 12 个月发布了 18 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
4.5.2latest2026/11/059 天前
4.5.12026/10/3113 天前
3.5.1legacy-32026/10/2915 天前
4.5.02026/09/122 个月前
4.4.02026/08/232 个月前
4.3.22026/08/013 个月前

关于 @emulsify/core 的常见问题

@emulsify/core 是什么?

装订用于故事本开发+Vite 构建的工具

如何安装 @emulsify/core?

在项目目录运行 npm install @emulsify/core,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^18.0.0 || ^19.0.0)、react-dom(^18.0.0 || ^19.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。它还提供命令行工具 emulsify-audit、emulsify-audit-twig-stories、emulsify-inspect-components,可以用 npx emulsify-audit 直接运行。

@emulsify/core 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/emulsify__core 是否存在。

@emulsify/core 支持 ESM 还是 CommonJS?

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

@emulsify/core 需要什么版本的 Node.js?

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

@emulsify/core 可以商用吗?

@emulsify/core 使用 GPL-2.0 许可。强 Copyleft:分发包含该代码的软件时,整个作品需以兼容的 GPL 许可开源。仅在内部使用、不对外分发时不触发此义务。以上为概括,不构成法律意见,请以许可原文为准。

@emulsify/core 的下载量有多少?

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

@emulsify/core 还在维护吗?

最新版本 4.5.2 发布于 2026/11/05(9 天前);至今共发布 53 个版本,其中过去 12 个月发布了 18 个;首次发布于 2024/06/08。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。