@sw7d/paper-renderer

题卡设计器核心组件 - 纯编辑表面
6,929
Install
npm install @sw7d/paper-renderer
Latest Version:0.6.5
Vue:3
License:MIT
Last Updated:Oct 9, 2026
Links: npm
Maintainer: chw1127

@sw7d/paper-renderer

题卡设计器核心渲染组件。纯编辑表面 + HTML 覆盖层交互,无 element-plus 依赖。


安装

npm install @sw7d/paper-renderer

使用

<template>
  <PaperEditor
    ref="editorRef"
    :initialData="documentJson"
    :qrCodeContent="'https://example.com/paper/123'"
    :paperName="'2024年期末考试'"
    :schoolName="'阳光中学'"
    @ready="onReady"
    @save="onSave"
  />
</template>

<script setup lang="ts">
import { ref } from 'vue'
import { PaperEditor, PaperPreview } from '@sw7d/paper-renderer'
import { usePaperCore } from '@sw7d/paper-renderer'
import type { ContentBlock } from '@sw7d/paper-renderer'
import '@sw7d/paper-renderer/styles'

const editorRef = ref()
const documentJson = ref('{...}')

function onReady() { /* 编辑器就绪 */ }
function onSave(json: string) { /* 保存文档 */ }
</script>

Props

属性 类型 说明
initialData string 初始文档 JSON
renderMode 'edit' | 'view' 渲染模式,默认 'edit'
paperName string 试卷名称
schoolName string 学校名称
qrCodeContent string 二维码内容文本(传入后内核自动生成二维码图片,支持响应式更新)

通过 ref 调用的 API

分类 方法 说明
文档 editorRef.document.save() 导出 JSON
文档 editorRef.document.load(json) 加载 JSON
题目 editorRef.questions.addFromHtml(html, no, score) 从 HTML 添加题目
题目 editorRef.questions.remove(id) 删除题目
布局 editorRef.layout.setPaperSize('A3') 切换纸张
布局 editorRef.layout.setColumns('double') 切换分栏
视口 editorRef.viewport.setZoom(1.5) 缩放
渲染 editorRef.render.getCleanPageSvgs() 获取纯净 SVG(用于 PDF 导出)
二维码 editorRef.setQRCode(content) 运行时动态修改二维码内容

发布流程

发布前确保已登录 npm 账号并拥有发布权限。

1️⃣ 设置 Token(只需一次)

由于账号开启了 2FA 两步验证,不能直接用 npm login,需要用 Granular Access Token:

  1. 打开 https://www.npmjs.com/settings/~/tokens
  2. 点击 "Generate New Token" → "Granular Access Token"
  3. 设置:
    • Token name: 任意(如 publish-token)
    • Packages and scopes: "Read and write"
    • 展开 2FA 选项 → 勾选 "Bypass 2FA for packages"
  4. 生成 token 后复制

保存 token 到本地(不要提交到代码仓库!):

# 写入项目 .npmrc(推荐)
npm set //registry.npmjs.org/:_authToken=你的token

⚠️ 如果报 ENOWORKSPACES 错误,说明在 workspace 目录下受限,退到外层执行后再切回来:

cd d:\workspace-ai\yzk_paper_designer
npm set //registry.npmjs.org/:_authToken=你的token
cd d:\workspace-ai\yzk_paper_designer\paper_designer\paper-renderer

2️⃣ 发布新版本

# 进入包目录
cd d:\workspace-ai\yzk_paper_designer\paper_designer\paper-renderer

# 更新版本号(三选一)
npm version patch   # 修复bug  0.1.0 → 0.1.1
npm version minor   # 加新功能 0.1.0 → 0.2.0
npm version major   # 不兼容   0.1.0 → 1.0.0

# 构建(会同时生成 JS 产物 + .d.ts 类型声明)
npm run build

# 发布(会自动执行 prepublishOnly → npm run build,以防忘记)
npm publish

publishConfig.access = public 已在 package.json 中配置,scoped 包也会公开发布。

3️⃣ 验证发布成功

# 查看包信息
npm view @sw7d/paper-renderer

# 在另一个项目中安装测试
npm install @sw7d/paper-renderer

本地调试(yalc)

开发阶段建议用 yalc 替代 npm link,避免每次修改都要重新发布:

# 1. 全局安装 yalc
npm install -g yalc

# 2. 在 paper-renderer 目录发布到本地仓库(首次)
yalc publish

# 3. 在测试项目引用本地包
cd d:\path\to\test-project
yalc add @sw7d/paper-renderer

# 4. 修改源码后,推送更新到所有引用了它的项目
yalc push

License

MIT

Related Packages

@vanduo-oss/vd3-flowchart

Vanduo Vue 3 flowchart editor — nodes, edges, layout, undo/redo, and a framework...

520 0
@composy/certificate-vue

Vue 3 components and composables for @composy/certificate-core

0
@web-ppt/editor

Framework-agnostic browser editing session and DOM view for Web-PPT.

966 12
@codemirror/lang-vue

Vue template support for the CodeMirror code editor

71,371,417 29
vue-svg-pan-zoom

Vue component for svg-pan-zoom

59,567

Version History

Version Released Vue License
0.6.5 ^3.4.0 MIT
0.6.4 ^3.4.0 MIT
0.6.3 ^3.4.0 MIT
0.6.1 ^3.4.0 MIT
0.6.0 ^3.4.0 MIT