@atscript/ui-styles

中文文档
0.1.169发布于 2026/11/07MITTypeScriptESM + CJS近 30 天下载 2245

共享的 UnoCSS 快捷键, 预设和标记- ui 的图标加载器( vue- form, vue- table, vue- wf)

中文使用文档
文档目录14 节
  1. 什么这个包裹船
  2. 带出自己的图标预设
  3. 此软件包为何存在
  4. 有负载的决定
  5. 决定6——自定义UnoCSS 有五个匹配图案的解析器
  6. 决定11——求助电话检测(默认部件的强制性规定)
  7. 决定13 - createAsBaseUnoConfig 编号 : asPresetVunor 循环断开
  8. 决定15 - excludeComponents 是比赛后, 消费方, UnoCSS 仅限
  9. AsResolver —— 说 componentPackages 是真理的唯一来源
  10. 第17号决定——Vue-*包中的加农用组件布局
  11. 预建CSS——取舍(决定5)
  12. 出品文物
  13. 建设管道
  14. 快捷键

Atscript UI

@ atscript/ ui 风格

📚 联合国 (原始内容存档于2018-10-21) (英语). ui.atscript.dev

共享 UnoCSS 预设、快捷键、图标加载器、每个组件类安全列表以及预建的 CSS @atscript/vue-form, (中文(简体) ), @atscript/vue-table,以及 @atscript/vue-wf。 。 。 .

该研究面向贡献. 它涵盖了包装船, 为什么每个部件都存在, 以及形成代码的负载决定. 最终用户安装和使用情况 /docs/guide/styling.md。 。 。 .

什么这个包裹船

  • asPresetVunor(opts) ——消费者化的UnoCSS预设. 回返 Preset[] 与 vunor 的预设、 图标预设、 快捷键合并 form 编号 : table 编号 : wf 编号 : common和习惯 提取器 将每个组件类列表拉入消费者的 CSS 捆绑,而没有任何 node_modules 文件系统扫描 .
  • createAsBaseUnoConfig(opts) —— 预设+快捷键与 asPresetVunor 不过 无 提取器。 仅限内部脚本(见第13号决定).
  • allShortcuts + 每一地区出口(formShortcuts, (中文(简体) ), tableShortcuts, (中文(简体) ), wfShortcuts, (中文(简体) ), commonShortcuts, (中文(简体) ), aoothShortcuts)——直接取用快捷图.
  • createIconsLoader(opts) - 仅节点的图标加载器(当地) .icons/ dir + 在磁盘上 API 缓存) scripts/bake-icons.ts;出口后消费者可以自行驱动 presetIcons() 举个例子 没有 asIconsPreset 导出——已烤 i-as-* 收藏在内部注册 asPresetVunor() 并关闭 icons: false。 。 。 .
  • bakedIcons - 烤出来的 name → <svg> 地图 i-as-* 藏书.
  • 生成的安全列表 时间 src/generated/component-classes.ts 已执行(第12号决定)。 再出口公共API: componentClasses, (中文(简体) ), helperAliases, (中文(简体) ), componentPackages, (中文(简体) ), getComponentClasses(...), (中文(简体) ), getHelperClasses(...)。 。 。 .
  • 预建CSS 时间 dist/css/{all,form,table,wf}.css 对非UnoCSS消费者(决定5)。 只默认主题; 不能被主题或过滤 .
  • AsResolver() 地点 @atscript/ui-styles/vite 子路径 - unplugin-vue-components 解析地图 As* PascalCase标签与每个组件子路径的匹配(@atscript/vue-{form,table,wf}/<as-name>) (中文(简体) ). 只有标记——必须明确进口可堆肥物。 开车经过 componentPackages 从生成的模块中自动取出新的组件.

带出自己的图标预设

两个 presetIcons() 在 UnoCSS 配置游戏中 i- 前缀 而第二者则永无决心。 当消费者已经经营自己的 图标预设, 关闭我们的 并交给他们 as 替代收藏 :

// uno.config.ts
import presetIcons from "@unocss/preset-icons";
import { asPresetVunor, bakedIcons } from "@atscript/ui-styles";

export default defineConfig({
  presets: [
    ...asPresetVunor({ icons: false }),
    presetIcons({
      collections: {
        // your own collections …
        as: (name) => bakedIcons[name],
      },
    }),
  ],
});

bakedIcons 正在同步,没有文件系统/网络依赖性。 解决 as 名称从图标化(或您自己的) .icons/*.svg)在建设时间,交换 用于 createIconsLoader({ aliases: defaultAsIconAliases, iconsDir: ".icons" }) ——"节点",写上"盘"缓存.

icons: false 仅跳过已烤的相片预设条目——快捷键 组件提取器、键框预设和窗格变体/安全列表 无人知晓。 (自0.1.133起) (中文(简体) )

此软件包为何存在

UnoCSS只为它在消费者源树上看到的类名生成 CSS. 何时 @atscript/vue-form 等从npm安装,他们的班级住在里面 node_modules 而UnoCSS不会扫描那里。 此软件包用自定义解决 提取器 扫描消费者自己的组件导入源 / tags / 助手调用, 并按组件抽取预计算类别列表.

有负载的决定

整个设计原理 STYLES.md。快速贡献出错单 :

决定6——自定义UnoCSS 有五个匹配图案的解析器

createAsExtractor (单位:千美元)src/extractor.ts承认:

  1. 子路径导入 - from '@atscript/vue-form/as-form'
  2. 桶名进口—— import { AsForm, AsField } from '@atscript/vue-form'
  3. PascalCase标签 - <AsForm, (中文(简体) ), <AsTableRoot (实际消费者代码中的主要模式)
  4. Kebab- case 标记 - <as-form
  5. 辅助功能电话 - createDefaultTypes(, (中文(简体) ), createDefaultControls(, (中文(简体) ), createDefaultCellTypes(

不知名的警卫是 componentClasses[kebab] - 命令里没有的都是禁止的 PascalCase / kebab 等同处理 src/kebab.ts。 。 。 .

决定11——求助电话检测(默认部件的强制性规定)

createDefaultTypes(), (中文(简体) ), createDefaultControls(),以及 createDefaultCellTypes() 船舶默认字段/细胞组件消费者从不直接标记. 只有标记的提取器会默默地放弃他们的课程. 提取脚本( E)scripts/extract-component-classes.ts)行走每个帮助文件,解析从 ../components/defaults中, kebab- cases 指定标识符, 并发出 helperAliases。当它将帮助者名称视为函数调用(成员调用如: obj.createDefaultTypes() 被领导排除 (?:^|[^.\w]) 警卫.

增加新的助手时,他们必须符合 决定17其布局( e)src/composables/create-*.ts,从 ../components/defaults),或者解析器在再生时会很难失败.

决定13 - createAsBaseUnoConfig 编号 : asPresetVunor 循环断开

里面的提取器 asPresetVunor() 进口 componentClasses。提取脚本需要使用相同的快捷键/预设来运行 UnoCSS componentClasses。如果脚本导入 asPresetVunor()你会有一个鸡蛋.

两个工厂:

  • createAsBaseUnoConfig({}) ——预设+快捷键,无提取器. 用于 scripts/extract-component-classes.ts 财务报告和审定财务报表 scripts/build-css.ts。 。 。 .
  • asPresetVunor(opts) ——同基+进口的提取器 componentClasses消费者使用.

别弄坏这些 别使编成的剧本依赖于取出者.

决定15 - excludeComponents 是比赛后, 消费方, UnoCSS 仅限

asPresetVunor({ excludeComponents: ["as-filter-dialog"] }) 让一个用户放弃他们自己替换的默认组件的类。 不适用 之后 regex 匹配——匹配但被排除在外的组件沉默地不添加类. 此文件已记录在案;替换为 <AsFilterDialog> 在排除它后,它给出了一个未设定的组件,是用户的明确选择.

预建的 CSS 不尊重 excludeComponents。 。 。 . CSS 文件在 dist/css/ 在我们的建设时间,每个软件包的完整安全清单一并生成。 选项是运行时取出器取出取出器;它没有位置在预烤的文物上. 需要放下默认组件的用户必须使用UnoCSS路径.

AsResolver —— 说 componentPackages 是真理的唯一来源

解决者在 src/vite.ts 已经 没有 保持自己的调度表。 它看每个 As* 标记在 componentPackages 表格 ${PKG_TO_NPM[pkg]}/${kebab}当一个新的公共组件 降落在任何vue-*包, 提取脚本把它捡起来, componentPackages 重新生成, 以及下一个建筑上的解析器路径—— 不需要解析器编辑 .

unplugin-vue-components 被电线作为 选项 相对依赖性。 不自动进口的消费者(明确使用) import { AsForm } from "@atscript/vue-form" 任何地方)不需要安装;做自动进口的消费者已经拥有了.

第17号决定——Vue-*包中的加农用组件布局

每个 @atscript/vue-* 软件包遵循一个布局 :

  • 公开根 组件 src/components/*.vue。 。 。 .
  • 公开默认 时间 src/components/defaults/*.vue,通过 src/components/defaults/index.ts (纯再出口桶-无逻辑,无辅助功能).
  • 私人内部 时间 src/components/internal/*.vue ——没有输出,没有子路径,但班级仍然通过依赖行走到达安全名单.
  • 帮助者 时间 src/composables/create-*.ts,仅通过 import { AsX, ... } from "../components/defaults"。帮助者别名解析 scripts/extract-component-classes.ts 取决于这个精确的形状——一个不符合要求的帮助文件会使构建失败.

任何新的组件或帮助者都必须符合要求;否则就无声地用工具来降低或硬失败.

预建CSS——取舍(决定5)

对于不运行UnoCSS的消费者,这个软件包将四个预建的CSS文件装入 dist/css/数字 :

文件目录
all.css横跨形式+表+wf的每个组件.
form.css组件来自 @atscript/vue-form 只有这个.
table.css组件来自 @atscript/vue-table 只有这个.
wf.css组件来自 @atscript/vue-wf 只有这个.

洞穴:

  • 不准编故事. 以默认方式在我们出版时建成一次 asPresetVunor() 调色板。 需要自定义主题的消费者必须使用UnoCSS路径.
  • 没有 excludeComponents。 。 。 . 见上文第15号决定.
  • 每包文件重叠. 每一个都独立完成—— as-spacer 在每一个使用它的包装文件. 不要结合 form.css + 键 table.css + 键 wf.css; 装入 all.css 换句话说.

这个 wf.css 文件今天很小(vue-wf有一个组件),但为了对称性而存在——vue-wf会增长,消费者已经可以装入他们需要的东西了.

出品文物

  • src/generated/component-classes.ts 承诺承诺(第12号决定)。 三张地图+两张助手功能. 以 pnpm extract-classes。 CI 必须运行脚本并失败于漂移; 修改的 PRs .vue 不重生的模板将被标记 .
  • dist/css/{all,form,table,wf}.css ——出土的建筑文物,通过已出版的柏油丸运送 files: ["dist"]。由 pnpm build-css。 。 。 .

建设管道

pnpm --filter @atscript/ui-styles run build
# expands to:
pnpm extract-classes && vp pack && pnpm build-css
  • extract-classes (单位:千美元)scripts/extract-component-classes.ts——走 vue-form/table/wf 源文件,运行 UnoCSS,出行 src/generated/component-classes.ts。读取磁盘上的源; 没有 消耗他们的 dist/。即使在 vue- * 软件包建成之前(决定8),一个干净的退出就可以运行此程序.
  • vp pack - 捆绑两个TS切入点: src/index.ts (主地表)和 src/vite.ts (单位:千美元) AsResolver。输出 : dist/{index,vite}.{mjs,cjs,d.mts,d.cts}。 。 。 .
  • build-css (单位:千美元)scripts/build-css.ts——使用 createAsBaseUnoConfig() (第13号决定)+ componentClasses + 键 componentPackages 从生成的模块中释放出四个 CSS 文件。 输出是字节决定的跨行.

快捷键

第六阶段结束后,操场和演示配置不再使用源扫描 vue-{form,table,wf}/src/**。编辑快捷键并看到它反映在操场中需要 @atscript/ui-styles 在监视模式中 :

# terminal 1
pnpm --filter @atscript/ui-styles run dev   # vp pack --watch

# terminal 2
pnpm dev

这交易了dev ergonomics 一个干净的,prod类的设置,匹配终端用户得到的.

版本与发布记录

@atscript/ui-styles 共发布 111 个版本,首次发布于 2026/05/14;过去 12 个月发布了 111 个版本。

版本发布日期距今
0.1.169latest2026/11/07今天
0.1.1682026/11/071 天前
0.1.1672026/11/061 天前
0.1.1662026/11/061 天前
0.1.1652026/11/061 天前
0.1.1642026/11/043 天前

关于 @atscript/ui-styles 的常见问题

@atscript/ui-styles 是什么?

共享的 UnoCSS 快捷键, 预设和标记- ui 的图标加载器( vue- form, vue- table, vue- wf)

如何安装 @atscript/ui-styles?

在项目目录运行 npm install @atscript/ui-styles,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:vunor(^0.4.1)、unocss(^66.7.0)、@unocss/preset-icons(^66.7.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@atscript/ui-styles 支持 TypeScript 吗?

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

@atscript/ui-styles 支持 ESM 还是 CommonJS?

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

@atscript/ui-styles 可以商用吗?

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

@atscript/ui-styles 的下载量有多少?

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

@atscript/ui-styles 还在维护吗?

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