{"_id":"@chromium-style-qrcode/generator","_rev":"7-07f15330cf417dd5d1a71fde942670e0","name":"@chromium-style-qrcode/generator","dist-tags":{"alpha":"1.0.1-alpha.1","beta":"1.0.1-beta.1","latest":"1.0.2"},"versions":{"1.0.0-alpha.0":{"name":"@chromium-style-qrcode/generator","version":"1.0.0-alpha.0","keywords":["rust","wasm","qrcode","webassembly","chromium-style"],"author":{"name":"liuliang@webfrontend.dev"},"license":"MIT","_id":"@chromium-style-qrcode/generator@1.0.0-alpha.0","maintainers":[{"name":"liuliangsir","email":"2269305724@qq.com"}],"homepage":"https://github.com/chromium-style-qrcode/generator#readme","bugs":{"url":"https://github.com/chromium-style-qrcode/generator/issues"},"dist":{"shasum":"4a74918a2844c915d1a290328782a8359d9d537c","tarball":"https://registry.npmjs.org/@chromium-style-qrcode/generator/-/generator-1.0.0-alpha.0.tgz","fileCount":15,"integrity":"sha512-FtCRUmLaIRspfy58d7ONNOywtL2Y1Rr5QUPOU4awt6ytuiXs/1+JsG5PNXujQM8PQqeFAutAaX8n15qiERruUA==","signatures":[{"sig":"MEQCIGj/+cG5jr3U1RngIKl6jKMea0oNNBzlEJ5SCG56fYgxAiBSMwALVWnWUpsEMHgCDghVteI+jMqQn6kEfVnpo08vVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":383419},"main":"dist/index.cjs","type":"module","types":"dist/qrcode.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.js","engines":{"node":">=22.14.0","pnpm":">=10.25.0"},"exports":{".":{"types":"./dist/qrcode.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./wasm":{"import":"./dist/qrcode_bg.wasm"}},"gitHead":"ced36ed36ad178ad223c895685a274298df93381","scripts":{"dev":"vite","build":"vite build","build:lib":"vite build --mode lib && pnpm build:copy","build:copy":"node scripts/copy-wasm.js","build:wasm":"wasm-pack build --target web --out-dir src --out-name qrcode","prepublishOnly":"pnpm build:wasm && pnpm build:lib"},"_npmUser":{"name":"liuliangsir","email":"2269305724@qq.com"},"repository":{"url":"git+ssh://git@github.com/chromium-style-qrcode/generator.git","type":"git"},"_npmVersion":"11.6.0","description":"A Chromium Style QR Code Generator using Rust and WebAssembly","directories":{},"sideEffects":false,"_nodeVersion":"24.8.0","dependencies":{"@chromium-style-qrcode/generator":"1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.25.0","devDependencies":{"vite":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/generator_1.0.0-alpha.0_1765701348722_0.6149293866293406","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@chromium-style-qrcode/generator","version":"1.0.0","keywords":["rust","wasm","qrcode","webassembly","chromium-style"],"author":{"name":"liuliang@webfrontend.dev"},"license":"MIT","_id":"@chromium-style-qrcode/generator@1.0.0","maintainers":[{"name":"liuliangsir","email":"2269305724@qq.com"}],"homepage":"https://github.com/chromium-style-qrcode/generator#readme","bugs":{"url":"https://github.com/chromium-style-qrcode/generator/issues"},"dist":{"shasum":"f9b9411cab6e8d6fb6253b37ec6f8e5f226e1fb9","tarball":"https://registry.npmjs.org/@chromium-style-qrcode/generator/-/generator-1.0.0.tgz","fileCount":15,"integrity":"sha512-BvrZJI23ravxaeHvOecqwhKvZ5Kr4qGjjnPVzhT4yLAomWkvdsVzRnpcqUfkHs9Pd1Sw4lb8KEYbxNZgcwDYbw==","signatures":[{"sig":"MEUCIQD3UPItE565dOx1TtvcagbOD5R/dFTfgF5zOm3pAVqtUAIgaQlsUnysVt8gwUl1WS2vj8PIBeKCIqPZm0r/vcGi5/A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":383338},"main":"dist/index.cjs","type":"module","types":"dist/qrcode.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.js","engines":{"node":">=22.14.0","pnpm":">=10.25.0"},"exports":{".":{"types":"./dist/qrcode.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./wasm":{"import":"./dist/qrcode_bg.wasm"}},"gitHead":"3f541b9bb13e0aaecf4acfaae231f0c8e34030ed","scripts":{"dev":"vite","build":"vite build","build:lib":"vite build --mode lib && pnpm build:copy","build:copy":"node scripts/copy-wasm.js","build:wasm":"wasm-pack build --target web --out-dir src --out-name qrcode","prepublishOnly":"pnpm build:wasm && pnpm build:lib"},"_npmUser":{"name":"liuliangsir","email":"2269305724@qq.com"},"repository":{"url":"git+ssh://git@github.com/chromium-style-qrcode/generator.git","type":"git"},"_npmVersion":"11.6.0","description":"A Chromium Style QR Code Generator using Rust and WebAssembly","directories":{},"sideEffects":false,"_nodeVersion":"24.8.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.25.0","devDependencies":{"vite":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/generator_1.0.0_1765716831225_0.15709159536943096","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-alpha.1":{"name":"@chromium-style-qrcode/generator","version":"1.0.1-alpha.1","keywords":["rust","wasm","qrcode","webassembly","chromium-style"],"author":{"name":"liuliang@webfrontend.dev"},"license":"MIT","_id":"@chromium-style-qrcode/generator@1.0.1-alpha.1","maintainers":[{"name":"liuliangsir","email":"2269305724@qq.com"}],"homepage":"https://github.com/chromium-style-qrcode/generator#readme","bugs":{"url":"https://github.com/chromium-style-qrcode/generator/issues"},"dist":{"shasum":"15be4a17f47747fe94c11b82d7b578a1e3c17c8a","tarball":"https://registry.npmjs.org/@chromium-style-qrcode/generator/-/generator-1.0.1-alpha.1.tgz","fileCount":16,"integrity":"sha512-bKLgTKXF+D/6g6fE/r23/GsRfkorb9RyWdn+7HeBKPp2gWl9iadEvYhBcAelbio1YebNuLi2wt6L2a04nUez0w==","signatures":[{"sig":"MEYCIQCHEJgqit0rnsPXZsG2r/7qaULH4DBCkACPxEWBP9o5QgIhAKvMChdgiqFOTja351ysBDcLQapLQA+jR9nAs6E7nzVI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":385953},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.js","engines":{"node":">=22.14.0","pnpm":">=10.25.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./wasm":{"import":"./dist/qrcode_bg.wasm"}},"gitHead":"3388a74353804e177dc4c822346c94c6b51eb719","scripts":{"dev":"vite","build":"vite build","build:lib":"vite build --mode lib && pnpm build:copy","build:copy":"node scripts/copy-wasm.js","build:wasm":"wasm-pack build --target web --out-dir src --out-name qrcode","prepublishOnly":"pnpm build:wasm && pnpm build:lib"},"_npmUser":{"name":"liuliangsir","email":"2269305724@qq.com"},"repository":{"url":"git+ssh://git@github.com/chromium-style-qrcode/generator.git","type":"git"},"_npmVersion":"11.6.0","description":"A Chromium Style QR Code Generator using Rust and WebAssembly","directories":{},"sideEffects":false,"_nodeVersion":"24.8.0","dependencies":{"@chromium-style-qrcode/generator":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.25.0","readmeFilename":"README.zh-CN.md","devDependencies":{"vite":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/generator_1.0.1-alpha.1_1766894235569_0.854274368124148","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-beta.0":{"name":"@chromium-style-qrcode/generator","version":"1.0.1-beta.0","keywords":["rust","wasm","qrcode","webassembly","chromium-style"],"author":{"name":"liuliang@webfrontend.dev"},"license":"MIT","_id":"@chromium-style-qrcode/generator@1.0.1-beta.0","maintainers":[{"name":"liuliangsir","email":"2269305724@qq.com"}],"homepage":"https://github.com/chromium-style-qrcode/generator#readme","bugs":{"url":"https://github.com/chromium-style-qrcode/generator/issues"},"dist":{"shasum":"45aab3536fd7a6d0ec755b7099151883dc5575f3","tarball":"https://registry.npmjs.org/@chromium-style-qrcode/generator/-/generator-1.0.1-beta.0.tgz","fileCount":16,"integrity":"sha512-dGcQP7BZlGOoqmgIR/DnZDId2nJH/hjR2nkv9m4QDJ5TPZVXWkyJ+CQcWRY0T9/Bgtras2/8hhfJPGpFRqTVUA==","signatures":[{"sig":"MEQCIDk/Xf/HxZXQKi5rfeDGYosqDe0Xd9w5jIhqBKcChVUNAiBqCb5Hri+uo0Wtv0qNBDAiB6bGTTvagFgJ7/33N9dc2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":385952},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.js","engines":{"node":">=22.14.0","pnpm":">=10.25.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./wasm":{"import":"./dist/qrcode_bg.wasm"}},"gitHead":"8c6b3033721f2303872cf619f025c243758f77fb","scripts":{"dev":"vite","build":"vite build","build:lib":"vite build --mode lib && pnpm build:copy","build:copy":"node scripts/copy-wasm.js","build:wasm":"wasm-pack build --target web --out-dir src --out-name qrcode","prepublishOnly":"pnpm build:wasm && pnpm build:lib"},"_npmUser":{"name":"liuliangsir","email":"2269305724@qq.com"},"repository":{"url":"git+ssh://git@github.com/chromium-style-qrcode/generator.git","type":"git"},"_npmVersion":"11.6.0","description":"A Chromium Style QR Code Generator using Rust and WebAssembly","directories":{},"sideEffects":false,"_nodeVersion":"24.8.0","dependencies":{"@chromium-style-qrcode/generator":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.25.0","readmeFilename":"README.zh-CN.md","devDependencies":{"vite":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/generator_1.0.1-beta.0_1766895778162_0.3289672390119025","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-beta.1":{"name":"@chromium-style-qrcode/generator","version":"1.0.1-beta.1","keywords":["rust","wasm","qrcode","webassembly","chromium-style"],"author":{"name":"liuliang@webfrontend.dev"},"license":"MIT","_id":"@chromium-style-qrcode/generator@1.0.1-beta.1","maintainers":[{"name":"liuliangsir","email":"2269305724@qq.com"}],"homepage":"https://github.com/chromium-style-qrcode/generator#readme","bugs":{"url":"https://github.com/chromium-style-qrcode/generator/issues"},"dist":{"shasum":"b535275af1f6016c0bb2df0e253cfc851add8a12","tarball":"https://registry.npmjs.org/@chromium-style-qrcode/generator/-/generator-1.0.1-beta.1.tgz","fileCount":15,"integrity":"sha512-QCGrJonSikM7Ux5+dMfNtLIJ08NeZIV96s1SR77Ri09Hk2UbfCXkKatd8XR17jpt3mTm+ykUrdLpzZ9f1cdo2w==","signatures":[{"sig":"MEQCIBxMnnQ/aZJ7Qh5+IJrKJtd825H/TW9jXHD7Uhtf8yg7AiAzWHIZVGQY2sTy4sUdgfTMsBrW48dyEtxomnU5G0gwQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":384827},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.js","engines":{"node":">=22.14.0","pnpm":">=10.25.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./wasm":{"import":"./dist/qrcode_bg.wasm"}},"gitHead":"16cd8fe6e61d806ddaff19254c23a5589b5af9f2","scripts":{"dev":"vite","build":"vite build","build:lib":"vite build --mode lib && pnpm build:copy","build:copy":"node scripts/copy-wasm.js","build:wasm":"wasm-pack build --target web --out-dir src --out-name qrcode","prepublishOnly":"pnpm build:wasm && pnpm build:lib"},"_npmUser":{"name":"liuliangsir","email":"2269305724@qq.com"},"repository":{"url":"git+ssh://git@github.com/chromium-style-qrcode/generator.git","type":"git"},"_npmVersion":"11.6.0","description":"A Chromium Style QR Code Generator using Rust and WebAssembly","directories":{},"sideEffects":false,"_nodeVersion":"24.8.0","dependencies":{"@chromium-style-qrcode/generator":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.25.0","readmeFilename":"README.zh-CN.md","devDependencies":{"vite":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/generator_1.0.1-beta.1_1766896964388_0.725081802167344","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@chromium-style-qrcode/generator","version":"1.0.1","keywords":["rust","wasm","qrcode","webassembly","chromium-style"],"author":{"name":"liuliang@webfrontend.dev"},"license":"MIT","_id":"@chromium-style-qrcode/generator@1.0.1","maintainers":[{"name":"liuliangsir","email":"2269305724@qq.com"}],"homepage":"https://github.com/chromium-style-qrcode/generator#readme","bugs":{"url":"https://github.com/chromium-style-qrcode/generator/issues"},"dist":{"shasum":"dabb9fae981adbf78a59b4572dc5306c3616e5dd","tarball":"https://registry.npmjs.org/@chromium-style-qrcode/generator/-/generator-1.0.1.tgz","fileCount":15,"integrity":"sha512-1ioTWHe30UwB0G2CQhEAayivA0a80d+npTAnY7JfNbg/Z34KGUNsu2kYO4yr+CkqJ6GTFVQzuA8PK3kcwFOIZQ==","signatures":[{"sig":"MEYCIQCeivXUyGCublodBh4zGYjIKpVItVJKTNkUzJM9A+HfhgIhAJuN5Vrytv8Mvzir16nptpCklBTQunHnMWVZmX+08r+m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":384820},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.js","engines":{"node":">=22.14.0","pnpm":">=10.25.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./wasm":{"import":"./dist/qrcode_bg.wasm"}},"gitHead":"dcebc3ee7834aeb020178c3dbf6333c51766f1d7","scripts":{"dev":"vite","build":"vite build","build:lib":"vite build --mode lib && pnpm build:copy","build:copy":"node scripts/copy-wasm.js","build:wasm":"wasm-pack build --target web --out-dir src --out-name qrcode","prepublishOnly":"pnpm build:wasm && pnpm build:lib"},"_npmUser":{"name":"liuliangsir","email":"2269305724@qq.com"},"repository":{"url":"git+ssh://git@github.com/chromium-style-qrcode/generator.git","type":"git"},"_npmVersion":"11.6.0","description":"A Chromium Style QR Code Generator using Rust and WebAssembly","directories":{},"sideEffects":false,"_nodeVersion":"24.8.0","dependencies":{"@chromium-style-qrcode/generator":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.25.0","devDependencies":{"vite":"^6.2.6"},"_npmOperationalInternal":{"tmp":"tmp/generator_1.0.1_1766897221498_0.5836547380384358","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@chromium-style-qrcode/generator","version":"1.0.2","type":"module","description":"A Chromium Style QR Code Generator using Rust and WebAssembly","main":"dist/index.cjs","module":"dist/index.js","unpkg":"dist/index.umd.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":{"import":"./package.json","require":"./package.json"},"./wasm":{"types":"./dist/qrcode_bg.wasm.d.ts","import":"./dist/qrcode_bg.wasm","require":"./dist/qrcode_bg.wasm"}},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"scripts":{"dev":"vite","build":"vite build","build:wasm":"wasm-pack build --target web --out-dir src --out-name qrcode","build:lib":"vite build --mode lib && pnpm build:copy","build:copy":"node scripts/copy-wasm.js","prepublishOnly":"pnpm build:wasm && pnpm build:lib"},"engines":{"node":">=22.14.0","pnpm":">=10.25.0"},"repository":{"type":"git","url":"git+ssh://git@github.com/chromium-style-qrcode/generator.git"},"keywords":["rust","wasm","qrcode","webassembly","chromium-style"],"author":{"name":"liuliang@webfrontend.dev"},"license":"MIT","sideEffects":false,"packageManager":"pnpm@10.25.0","devDependencies":{"vite":"^6.2.6"},"_id":"@chromium-style-qrcode/generator@1.0.2","gitHead":"47012c6fea4faaa72bb84c484bb8cffa92d349ea","bugs":{"url":"https://github.com/chromium-style-qrcode/generator/issues"},"homepage":"https://github.com/chromium-style-qrcode/generator#readme","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-EEGxZknuJQJj2ZpX0gwI00z8/g20KykU67dDjz/4RxDR3txUE6Bi6zjbXRWnxTYGDe5RxeeypfT2YONzFaJM6g==","shasum":"54a048c87410f5ddbb1e0377c32a106763503422","tarball":"https://registry.npmjs.org/@chromium-style-qrcode/generator/-/generator-1.0.2.tgz","fileCount":15,"unpackedSize":369262,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIE9LYXPxBq8yO5W0f4TmZD4peaLE1VjrC/7Nna00K7KoAiEAmmiWEiPrPO8w+/GwjsE/AwXMmaBbOS7ZJsr61cXnCxo="}]},"_npmUser":{"name":"liuliangsir","email":"2269305724@qq.com"},"directories":{},"maintainers":[{"name":"liuliangsir","email":"2269305724@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/generator_1.0.2_1776568852538_0.21062071112078073"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-14T08:35:48.571Z","modified":"2026-04-19T03:20:52.860Z","1.0.0-alpha.0":"2025-12-14T08:35:48.928Z","1.0.0":"2025-12-14T12:53:51.394Z","1.0.1-alpha.1":"2025-12-28T03:57:15.755Z","1.0.1-beta.0":"2025-12-28T04:22:58.352Z","1.0.1-beta.1":"2025-12-28T04:42:44.569Z","1.0.1":"2025-12-28T04:47:01.685Z","1.0.2":"2026-04-19T03:20:52.723Z"},"bugs":{"url":"https://github.com/chromium-style-qrcode/generator/issues"},"author":{"name":"liuliang@webfrontend.dev"},"license":"MIT","homepage":"https://github.com/chromium-style-qrcode/generator#readme","keywords":["rust","wasm","qrcode","webassembly","chromium-style"],"repository":{"type":"git","url":"git+ssh://git@github.com/chromium-style-qrcode/generator.git"},"description":"A Chromium Style QR Code Generator using Rust and WebAssembly","maintainers":[{"name":"liuliangsir","email":"2269305724@qq.com"}],"readme":"# 生成器\n\n这是一个使用 Rust 和 WebAssembly 技术开发的高性能 QR 码生成器。该项目将 Rust 的高效能与 WebAssembly 的跨平台特性相结合，为 Web 应用提供快速、高效的 QR 码生成功能。\n\n## 功能特点\n\n- ⚡️ **高性能**：利用 Rust 和 WebAssembly 实现高速 QR 码生成\n- 🔄 **实时预览**：输入变化时即时更新 QR 码\n- 📋 **智能复制功能**：可直接复制 QR 码图像到剪贴板（支持文本降级）\n- 💾 **完美下载**：下载清晰的 450×450 像素 PNG QR 码图像\n- 🦖 **Chromium 风格恐龙**：支持带白色背景的恐龙中心图像\n- 📱 **响应式设计**：适配不同设备屏幕尺寸\n- ✨ **高 DPI 支持**：在 Retina 和高 DPI 显示器上清晰渲染\n- 🎯 **Chromium 兼容性**：像素级完美实现，匹配 Chrome 的 QR 生成器\n\n## 质量改进\n\n### 技术规范\n\n- **模块样式**：圆形点（`ModuleStyle::kCircles`）匹配 Chrome\n- **定位器样式**：圆角（`LocatorStyle::kRounded`）匹配 Chrome\n- **中心图像**：使用 Chromium 源码精确像素数据的恐龙\n- **画布尺寸**：240×240 像素（相当于 `GetQRCodeImageSize()`）\n- **模块大小**：每模块 10 像素（`kModuleSizePixels`）\n- **恐龙缩放**：每恐龙像素 4 像素（`kDinoTileSizePixels`）\n\n## 技术栈\n\n- **Rust**：核心 QR 码生成逻辑\n- **WebAssembly**：将 Rust 编译为可在浏览器中运行的格式\n- **JavaScript**：前端交互和渲染\n- **HTML5/CSS**：用户界面\n\n## 安装与使用\n\n### 作为 npm 包使用\n\n```bash\nnpm install @chromium-style-qrcode/generator\n```\n\n```javascript\nimport {\n  QuietZone,\n  initialize,\n  CenterImage,\n  ModuleStyle,\n  LocatorStyle,\n  generateQRCode,\n} from '@chromium-style-qrcode/generator';\n\n// 初始化 WASM 模块（生成前必须调用）\nawait initialize();\n\n// 生成 QR 码\nconst result = generateQRCode('https://example.com', {\n  moduleStyle: ModuleStyle.Circles,\n  locatorStyle: LocatorStyle.Rounded,\n  centerImage: CenterImage.Dino,\n  quietZone: QuietZone.WillBeAddedByClient,\n});\n\nconsole.log(result.data); // QR 码数据的 Uint8Array\nconsole.log(result.size); // 包含安静区的尺寸\nconsole.log(result.original_size); // 原始 QR 码尺寸\n```\n\n### 开发环境设置\n\n#### 前置条件\n\n- [Rust](https://www.rust-lang.org/tools/install)\n- [wasm-pack](https://wasm-bindgen.github.io/wasm-pack/installer/)\n- [Node.js](https://nodejs.org/) (推荐使用 pnpm 包管理器)\n\n### 构建步骤\n\n1. 克隆仓库\n\n   ```bash\n   git clone https://github.com/chromium-style-qrcode/generator.git\n   cd generator\n   ```\n\n2. 构建 WebAssembly 模块\n\n   ```bash\n   pnpm build:wasm\n   ```\n\n3. 安装前端依赖\n\n   ```bash\n   pnpm install\n   ```\n\n4. 启动开发服务器\n\n   ```bash\n   pnpm dev\n   ```\n\n5. 在浏览器中打开项目 (默认为 <http://localhost:5173>)\n\n### 使用方法\n\n1. 在输入框中输入任意文本、URL 或数据（最多 2000 个字符）\n2. QR 码将自动生成并实时更新显示\n3. 使用\"复制\"按钮将 QR 码图像直接复制到剪贴板\n4. 使用\"下载\"按钮保存清晰的 450×450 PNG QR 码图像\n\n## 项目结构\n\n```text\n├── src/              # 源代码目录\n│   ├── lib.rs        # Rust WebAssembly 模块核心代码\n│   ├── index.js      # 库入口文件\n│   ├── app.js        # 演示应用 JavaScript 逻辑\n│   └── app.css       # 样式表\n├── scripts/          # 构建脚本\n│   └── copy-wasm.js  # 复制 WASM 产物到 dist\n├── dist/             # 构建输出目录（npm 包）\n├── public/           # 静态资源\n├── index.html        # 演示页面\n├── Cargo.toml        # Rust 项目配置\n└── package.json      # JavaScript 项目配置\n```\n\n## 原理介绍\n\n该 QR 码生成器使用 Rust 的`qr_code`库生成 QR 码数据，并通过 WebAssembly 将其暴露给 JavaScript。生成过程包括：\n\n1. 接收用户输入的文本数据\n2. 在 Rust 中生成对应的 QR 码二维矩阵\n3. 添加适当的安静区 (quiet zone)\n4. 将二维矩阵数据传回 JavaScript\n5. 使用 Canvas API 渲染 QR 码图像\n\n## 开发\n\n### 修改 Rust 代码\n\n如果您修改了`lib.rs`或其他 Rust 代码，需要重新构建 WebAssembly 模块：\n\n```bash\npnpm build:wasm\n```\n\n### 构建 npm 包\n\n构建用于 npm 发布的库：\n\n```bash\npnpm build:lib\n```\n\n这将：\n1. 使用 Vite 构建库（ES、CJS、UMD 格式）\n2. 复制 WASM 产物到 `dist/` 目录\n\n### 发布到 npm\n\n```bash\npnpm publish\n```\n\n`prepublishOnly` 脚本会自动运行 `build:wasm` 和 `build:lib`。\n\n### 修改前端代码\n\n前端代码修改后会自动重新加载。\n\n## 许可证\n\n[MIT](LICENSE)\n\n## 贡献\n\n欢迎提交问题和 PR！请确保您的代码符合项目的编码风格。\n","readmeFilename":"README.zh-CN.md"}