taro-bluetooth-print 2.9.3 โ†’ 2.9.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,95 +1,105 @@
1
- # Taro Bluetooth Print
1
+ <div align="center">
2
2
 
3
- <p align="center">
4
- <a href="https://www.npmjs.com/package/taro-bluetooth-print" target="_blank"><img src="https://img.shields.io/npm/v/taro-bluetooth-print?style=flat-square&color=4338ca" alt="npm version"></a>
5
- <a href="https://www.npmjs.com/package/taro-bluetooth-print" target="_blank"><img src="https://img.shields.io/npm/dm/taro-bluetooth-print?style=flat-square&color=4338ca" alt="downloads"></a>
6
- <a href="https://github.com/agions/taro-bluetooth-print/blob/main/LICENSE" target="_blank"><img src="https://img.shields.io/npm/l/taro-bluetooth-print?style=flat-square&color=4338ca" alt="license"></a>
7
- <a href="https://github.com/agions/taro-bluetooth-print" target="_blank"><img src="https://img.shields.io/github/stars/agions/taro-bluetooth-print?style=flat-square" alt="stars"></a>
8
- <a href="https://github.com/agions/taro-bluetooth-print" target="_blank"><img src="https://img.shields.io/github/forks/agions/taro-bluetooth-print?style=flat-square" alt="forks"></a>
9
- <a href="https://bundlephobia.com/package/taro-bluetooth-print" target="_blank"><img src="https://img.shields.io/bundlephobia/minzip/taro-bluetooth-print?style=flat-square" alt="bundle size"></a>
10
- </p>
3
+ # ๐Ÿ–จ๏ธ Taro Bluetooth Print
11
4
 
12
- <p align="center">
13
- ่ฝป้‡็บงใ€้ซ˜ๆ€ง่ƒฝ็š„ Taro ่“็‰™ๆ‰“ๅฐๅบ“ ยท ๆ”ฏๆŒ็ƒญๆ•็ฅจๆฎใ€ๆ ‡็ญพๆ‰“ๅฐ๏ผŒ่ฆ†็›– 8+ ๅนณๅฐ
14
- </p>
5
+ **่ฝป้‡็บงใ€้ซ˜ๆ€ง่ƒฝ็š„ Taro ่ทจ็ซฏ่“็‰™ๆ‰“ๅฐๅบ“ โ€” ่ฆ†็›– 7 ๅคงๅนณๅฐใ€8 ็งๆ‰“ๅฐๅ่ฎฎ๏ผŒๅผ€็ฎฑๅณ็”จ**
6
+
7
+ [![npm version](https://img.shields.io/npm/v/taro-bluetooth-print?style=flat-square&color=4338ca)](https://www.npmjs.com/package/taro-bluetooth-print)
8
+ [![downloads](https://img.shields.io/npm/dm/taro-bluetooth-print?style=flat-square&color=4338ca)](https://www.npmjs.com/package/taro-bluetooth-print)
9
+ [![license](https://img.shields.io/npm/l/taro-bluetooth-print?style=flat-square&color=4338ca)](https://github.com/agions/taro-bluetooth-print/blob/main/LICENSE)
10
+ [![stars](https://img.shields.io/github/stars/agions/taro-bluetooth-print?style=flat-square)](https://github.com/agions/taro-bluetooth-print)
11
+ [![forks](https://img.shields.io/github/forks/agions/taro-bluetooth-print?style=flat-square)](https://github.com/agions/taro-bluetooth-print)
12
+ [![bundle size](https://img.shields.io/bundlephobia/minzip/taro-bluetooth-print?style=flat-square)](https://bundlephobia.com/package/taro-bluetooth-print)
13
+
14
+ </div>
15
15
 
16
16
  ---
17
17
 
18
- ## ็‰นๆ€งไบฎ็‚น
18
+ ## โœจ ็‰นๆ€งๆ€ป่งˆ
19
19
 
20
- ### ๅŸบ็ก€่ƒฝๅŠ›
20
+ ### ๐Ÿ“ก ๅŸบ็ก€่ƒฝๅŠ›
21
21
 
22
22
  | ่ƒฝๅŠ› | ่ฏดๆ˜Ž |
23
- |------|------|
24
- | ๅคšๅนณๅฐ้€‚้… | ๅพฎไฟก/ๆ”ฏไป˜ๅฎ/็™พๅบฆ/ๅญ—่Š‚่ทณๅŠจ/QQ ๅฐ็จ‹ๅบ๏ผŒH5 WebBluetooth๏ผŒ้ธฟ่’™๏ผŒReact Native |
25
- | ๅคšๅ่ฎฎ้ฉฑๅŠจ | ESC/POS๏ผˆ็ƒญๆ•๏ผ‰ใ€TSPL/ZPL/CPCL๏ผˆๆ ‡็ญพ๏ผ‰ใ€STAR ็ณปๅˆ— |
26
- | ้“พๅผ่ฐƒ็”จ | `printer.text(...).feed().qr(...).cut().print()`๏ผŒIDE ่‡ชๅŠจ่กฅๅ…จ |
27
- | TypeScript | ๅฎŒๆ•ด็ฑปๅž‹ๅฎšไน‰๏ผŒๆ— ไปปไฝ• `any` ๆšด้œฒ๏ผŒๆ— ๅค–้ƒจไพ่ต– |
28
- | ็ผ–็ ๆ”ฏๆŒ | GBK / GB2312 / Big5 / UTF-8 / EUC-KR / Shift-JIS / ISO-2022-JP |
23
+ |:-----|:-----|
24
+ | ๅคšๅนณๅฐ้€‚้… | ๅพฎไฟก / ๆ”ฏไป˜ๅฎ / ็™พๅบฆ / ๅญ—่Š‚่ทณๅŠจ / QQ ๅฐ็จ‹ๅบ๏ผŒH5 WebBluetooth๏ผŒReact Native |
25
+ | ๅคšๅ่ฎฎ้ฉฑๅŠจ | ESC/POS๏ผˆ็ƒญๆ•๏ผ‰ใ€TSPL / ZPL / CPCL๏ผˆๆ ‡็ญพ๏ผ‰ใ€STAR / ไฝณๅš / ่Šฏ็ƒจ / ๆ€ๆ™ฎ็‘ž็‰น |
26
+ | ้“พๅผ่ฐƒ็”จ API | `printer.text(...).feed().qr(...).cut().print()` โ€” IDE ๅ…จ่‡ชๅŠจ่กฅๅ…จ |
27
+ | TypeScript ไธฅๆ ผๆจกๅผ | ๅฎŒๆ•ด็ฑปๅž‹ๅฎšไน‰๏ผŒ้›ถ `any` ๆšด้œฒ๏ผŒๆ— ๅค–้ƒจ่ฟ่กŒๆ—ถไพ่ต– |
28
+ | ๅคš็ผ–็ ๆ”ฏๆŒ | GBK / GB2312 / Big5 / UTF-8 / EUC-KR / Shift-JIS / ISO-2022-JP |
29
+ | ้›ถ่ฟ่กŒๆ—ถไพ่ต– | ็”ŸไบงๅŒ…ๆ— ็ฌฌไธ‰ๆ–น่ฟ่กŒๆ—ถไพ่ต–๏ผŒไฝ“็งฏๅฏๆŽง |
29
30
 
30
- ### ้ซ˜็บงๆ‰“ๅฐ
31
+ ### ๐Ÿ–จ๏ธ ้ซ˜็บงๆ‰“ๅฐ
31
32
 
32
33
  | ่ƒฝๅŠ› | ่ฏดๆ˜Ž |
33
- |------|------|
34
- | ๅ›พ็‰‡ๆ‰“ๅฐ | Floyd-Steinberg ๆŠ–ๅŠจ็ฎ—ๆณ•๏ผŒ6 ็งๆŠ–ๅŠจๆจกๅผ๏ผŒRGBA โ†’ ้ป‘็™ฝไฝๅ›พ |
35
- | ไบŒ็ปด็ /ๆก็  | ๅŽŸ็”ŸๆŒ‡ไปคๆ”ฏๆŒ Code128/EAN/UPC/QR/PDF417 ็ญ‰ 10+ ๆ ผๅผ |
36
- | ๆจกๆฟๅผ•ๆ“Ž | loop ๅพช็Žฏ / condition ๆกไปถ / border ่พนๆก† / table ่กจๆ ผ๏ผŒๅฐ็ฅจๆ ‡็ญพไธ€้”ฎๆธฒๆŸ“ |
37
- | ๆš‚ๅœ/ๆขๅค/ๅ–ๆถˆ | ๅฎŒๆ•ด็š„ๆ‰“ๅฐไปปๅŠก็”Ÿๅ‘ฝๅ‘จๆœŸๆŽงๅˆถ |
34
+ |:-----|:-----|
35
+ | ๅ›พ็‰‡ๆ‰“ๅฐ | Floyd-Steinberg ๆŠ–ๅŠจ็ฎ—ๆณ•๏ผŒ6 ็งๆŠ–ๅŠจๆจกๅผ๏ผŒRGBA โ†’ ้ป‘็™ฝไฝๅ›พ่‡ช้€‚ๅบ”่ฝฌๆข๏ผŒESC/POS/ZPL/TSPL/STAR ๅ…จ้ฉฑๅŠจๆ”ฏๆŒ |
36
+ | ZPL ๅ›พๅƒ็ผ–็  | `ZplDriver.image()` โ€” ^GFA ๅ‘ฝไปค๏ผŒไฝๅ›พ โ†’ ๅๅ…ญ่ฟ›ๅˆถ็ผ–็ ๏ผŒๆ”ฏๆŒ ZD420 ็ญ‰ Zebra ๆ ‡็ญพๆœบ |
37
+ | CPCL Logo ไธ‹่ฝฝ | `CpclDriver.downloadLogo()` โ€” CG ๅŽ‹็ผฉๅ›พๅฝขๅ‘ฝไปค๏ผŒๅฎๅฎšไน‰ๅญ˜ๅ‚จ๏ผŒๆ”ฏๆŒ HP ็ญ‰็งปๅŠจๆ‰“ๅฐๆœบ |
38
+ | ไบŒ็ปด็  / ๆก็  | ๅŽŸ็”ŸๆŒ‡ไปคๆ”ฏๆŒ Code128 / EAN / UPC / QR / PDF417 ็ญ‰ 10+ ๆ ผๅผ |
39
+ | ๆจกๆฟๅผ•ๆ“Ž | ๆ”ฏๆŒ `loop` ๅพช็Žฏ / `condition` ๆกไปถ / `border` ่พนๆก† / `table` ่กจๆ ผ๏ผŒๅฐ็ฅจๆ ‡็ญพไธ€้”ฎๆธฒๆŸ“ |
40
+ | ไปปๅŠก็”Ÿๅ‘ฝๅ‘จๆœŸ | ๅฎŒๆ•ด็š„ๆ‰“ๅฐไปปๅŠกๆš‚ๅœ / ๆขๅค / ๅ–ๆถˆๆŽงๅˆถ |
38
41
  | ๆ‰“ๅฐ้ข„่งˆ | ESC/POS ๅ‘ฝไปคๅฎžๆ—ถๆธฒๆŸ“ไธบ Canvas ๅ›พๅƒ๏ผŒ่ฐƒ่ฏ•ๆ‰€่งๅณๆ‰€ๅพ— |
39
42
 
40
- ### ่ฟ็ปด็ฎก็†
43
+ ### โš™๏ธ ่ฟ็ปด็ฎก็†
41
44
 
42
45
  | ่ƒฝๅŠ› | ่ฏดๆ˜Ž |
43
- |------|------|
44
- | ็ฆป็บฟ็ผ“ๅญ˜ | ๆ–ญ็ฝ‘่‡ชๅŠจ็ผ“ๅญ˜๏ผŒๆฅ็ฝ‘่‡ชๅŠจๅŒๆญฅ๏ผŒ้›ถไปปๅŠกไธขๅคฑ |
45
- | ๆ‰“ๅฐ้˜Ÿๅˆ— | ไผ˜ๅ…ˆ็บงๆŽ’ๅบ๏ผŒๅคฑ่ดฅ่‡ชๅŠจ้‡่ฏ•๏ผŒๆญป้“พ่‡ชๅŠจๅ‰”้™ค |
46
- | ๅคšๆ‰“ๅฐๆœบ็ฎก็† | MultiPrinterManager ๅคš่ฎพๅค‡ๅนถๅ‘๏ผŒๆ”ฏๆŒ่ดŸ่ฝฝๅ‡่กก |
47
- | ๆ‰“ๅฐๅކๅฒ | PrintHistory ๅฎŒๆ•ด่ฎฐๅฝ•๏ผŒๅซ่€—ๆ—ถ/ๅญ—่Š‚ๆ•ฐ/ๆˆๅŠŸ็އ็ปŸ่ฎก |
48
- | ๅฎšๆ—ถ้‡่ฏ• | ScheduledRetryManager ๆŒ‡ๆ•ฐ้€€้ฟ๏ผŒ่ฟ›็จ‹้‡ๅฏๅŽ่‡ชๅŠจๆขๅค่ฐƒๅบฆ |
49
- | ๅฎšๆ—ถ่ฐƒๅบฆ | PrintScheduler ๆ”ฏๆŒ cron ่กจ่พพๅผ/ไธ€ๆฌกๆ€ง/้—ด้š”้‡ๅคไปปๅŠก |
50
- | ่ฎพๅค‡ๅ‘็Žฐ | DiscoveryService ๅขžๅผบๅž‹่ฟ‡ๆปคใ€ๆŽ’ๅบใ€RSSI ็ผ“ๅญ˜ |
46
+ |:-----|:-----|
47
+ | ็ฆป็บฟ็ผ“ๅญ˜ | ๆ–ญ็ฝ‘่‡ชๅŠจ็ผ“ๅญ˜๏ผŒๆขๅค็ฝ‘็ปœ่‡ชๅŠจๅŒๆญฅ๏ผŒ้›ถไปปๅŠกไธขๅคฑ |
48
+ | ๆ‰“ๅฐ้˜Ÿๅˆ— | ไผ˜ๅ…ˆ็บงๆŽ’ๅบใ€ๅคฑ่ดฅ่‡ชๅŠจ้‡่ฏ•ใ€ๆญป้“พ่‡ชๅŠจๅ‰”้™ค |
49
+ | ๅคšๆ‰“ๅฐๆœบ็ฎก็† | `MultiPrinterManager` ๅคš่ฎพๅค‡ๅนถๅ‘๏ผŒๆ”ฏๆŒ่ดŸ่ฝฝๅ‡่กก |
50
+ | ๆ‰“ๅฐๅކๅฒ | `PrintHistory` ๅฎŒๆ•ด่ฎฐๅฝ•๏ผŒๅซ่€—ๆ—ถ / ๅญ—่Š‚ๆ•ฐ / ๆˆๅŠŸ็އ็ปŸ่ฎก |
51
+ | ๅฎšๆ—ถ้‡่ฏ• | `ScheduledRetryManager` ๆŒ‡ๆ•ฐ้€€้ฟ็ญ–็•ฅ๏ผŒ่ฟ›็จ‹้‡ๅฏๅŽ่‡ชๅŠจๆขๅค่ฐƒๅบฆ |
52
+ | ๅฎšๆ—ถ่ฐƒๅบฆ | `PrintScheduler` ๆ”ฏๆŒ cron ่กจ่พพๅผ / ไธ€ๆฌกๆ€ง / ้—ด้š”้‡ๅคไปปๅŠก |
53
+ | ่ฎพๅค‡ๅ‘็Žฐ | `DiscoveryService` ๅขžๅผบๅž‹่ฟ‡ๆปคใ€ๆŽ’ๅบใ€RSSI ไฟกๅท็ผ“ๅญ˜ |
54
+ | ๆ’ไปถ็ณป็ปŸ | DI ๅฎนๅ™จ + EventBus ไบ‹ไปถๆ€ป็บฟ๏ผŒๅฏๆ‰ฉๅฑ•ๆžถๆž„ |
51
55
 
52
56
  ---
53
57
 
54
- ## ๆ€ง่ƒฝๆŒ‡ๆ ‡
55
-
56
- | ๆŒ‡ๆ ‡ | ๅ€ผ |
57
- |------|-----|
58
- | ๅŒ…ไฝ“็งฏ๏ผˆgzip๏ผ‰ | **~226 KB**๏ผˆๅซๅ…จ้ƒจ้ฉฑๅŠจ๏ผŒๆ— ๅค–้ƒจไพ่ต–๏ผ‰ |
59
- | Tree-shaking | โœ… ๆ”ฏๆŒ๏ผŒimport { BluetoothPrinter } ๅณ็”จ |
60
- | ๆŒ‰้œ€ๅŠ ่ฝฝ | โœ… ็ผ–็ ่กจๆ‡’ๅŠ ่ฝฝ๏ผŒๆœช็”จๅˆฐ็š„ๅญ—็ฌฆ้›†ไธ่ฟ›ๅ…ฅไบง็‰ฉ |
61
- | ๆต‹่ฏ•่ฆ†็›– | โœ… 648 ไธช็”จไพ‹๏ผŒCI ๅ…จ้“พ่ทฏ้€š่ฟ‡ |
62
-
63
- ---
64
-
65
- ## ๅฟซ้€Ÿๅผ€ๅง‹
58
+ ## ๐Ÿ“ฆ ๅฎ‰่ฃ…
66
59
 
67
60
  ```bash
61
+ # npm
62
+ npm install taro-bluetooth-print
63
+
64
+ # pnpm๏ผˆๆŽจ่๏ผ‰
68
65
  pnpm add taro-bluetooth-print
66
+
67
+ # yarn
68
+ yarn add taro-bluetooth-print
69
69
  ```
70
70
 
71
+ > **ๅ‰็ฝฎไพ่ต–**๏ผš้กน็›ฎ้œ€ๅฎ‰่ฃ… `@tarojs/taro ^3.6.22` ๅŠไปฅไธŠ็‰ˆๆœฌใ€‚
72
+
73
+ ---
74
+
75
+ ## ๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹
76
+
71
77
  ```typescript
72
- import { createBluetoothPrinter, DeviceManager, WebBluetoothAdapter } from 'taro-bluetooth-print';
78
+ import {
79
+ createBluetoothPrinter,
80
+ DeviceManager,
81
+ WebBluetoothAdapter
82
+ } from 'taro-bluetooth-print';
73
83
 
74
- async function print() {
75
- // 1. ๆ‰ซๆ่ฎพๅค‡
84
+ async function printReceipt() {
85
+ // โ‘  ๆ‰ซๆ่“็‰™่ฎพๅค‡
76
86
  const manager = new DeviceManager();
77
87
  await manager.startScan({ timeout: 10000 });
78
88
  const devices = manager.getDiscoveredDevices();
79
89
 
80
90
  if (devices.length === 0) {
81
- console.log('ๆœชๅ‘็Žฐ่ฎพๅค‡');
91
+ console.warn('ๆœชๅ‘็Žฐ่“็‰™่ฎพๅค‡');
82
92
  return;
83
93
  }
84
94
 
85
- // 2. ๅˆ›ๅปบๆ‰“ๅฐๆœบๅฎžไพ‹๏ผˆๆŽจ่ๆ–นๅผ๏ผ‰
95
+ // โ‘ก ๅˆ›ๅปบๆ‰“ๅฐๆœบๅฎžไพ‹ๅนถ่ฟžๆŽฅ
86
96
  const printer = createBluetoothPrinter({
87
97
  adapter: new WebBluetoothAdapter()
88
98
  });
89
99
 
90
100
  await printer.connect(devices[0].deviceId);
91
101
 
92
- // 3. ้“พๅผ่ฐƒ็”จๆ‰“ๅฐ
102
+ // โ‘ข ้“พๅผ่ฐƒ็”จ โ€” ๆž„ๅปบๅนถๆ‰“ๅฐๅฐ็ฅจ
93
103
  await printer
94
104
  .text('=== ๆฌข่ฟŽๅ…‰ไธด ===', 'GBK')
95
105
  .feed()
@@ -104,70 +114,81 @@ async function print() {
104
114
  .cut()
105
115
  .print();
106
116
 
117
+ // โ‘ฃ ๆ–ญๅผ€่ฟžๆŽฅ
107
118
  await printer.disconnect();
108
119
  }
109
120
  ```
110
121
 
111
122
  ---
112
123
 
113
- ## ๅนณๅฐไธŽ้ฉฑๅŠจ
114
-
115
- ### ๆ”ฏๆŒ็š„ๅนณๅฐ
124
+ ## ๐Ÿ“ฑ ๅนณๅฐๆ”ฏๆŒ
116
125
 
117
- | ๅนณๅฐ | ้€‚้…ๅ™จ | ็Šถๆ€ |
118
- |------|--------|------|
126
+ | ๅนณๅฐ | ้€‚้…ๅ™จ็ฑป | ็Šถๆ€ |
127
+ |:-----|:---------|:----:|
119
128
  | ๅพฎไฟกๅฐ็จ‹ๅบ | `TaroAdapter` | โœ… |
120
- | H5 (Web Bluetooth) | `WebBluetoothAdapter` | โœ… |
121
129
  | ๆ”ฏไป˜ๅฎๅฐ็จ‹ๅบ | `AlipayAdapter` | โœ… |
122
130
  | ็™พๅบฆๅฐ็จ‹ๅบ | `BaiduAdapter` | โœ… |
123
131
  | ๅญ—่Š‚่ทณๅŠจๅฐ็จ‹ๅบ | `ByteDanceAdapter` | โœ… |
124
132
  | QQ ๅฐ็จ‹ๅบ | `QQAdapter` | โœ… |
125
- | ้ธฟ่’™ HarmonyOS | `TaroAdapter` | โœ… |
133
+ | H5 (Web Bluetooth) | `WebBluetoothAdapter` | โœ… |
126
134
  | React Native | `ReactNativeAdapter` | โœ… |
127
135
 
128
- ### ๆ”ฏๆŒ็š„้ฉฑๅŠจ
136
+ > ๐Ÿ’ก **ๆ็คบ**๏ผš้ธฟ่’™ HarmonyOS ๅฏ้€š่ฟ‡ `TaroAdapter` ้€‚้…ไฝฟ็”จใ€‚
137
+
138
+ ## ๐Ÿ–จ๏ธ ๆ‰“ๅฐๆœบ้ฉฑๅŠจ
129
139
 
130
- | ้ฉฑๅŠจ | ๅ่ฎฎ | ๅ…ธๅž‹ๅ“็‰Œ |
131
- |------|------|---------|
132
- | `EscPos` | ESC/POS | ไฝณๅšใ€่Šฏ็ƒจใ€ๅ•†็ฑณใ€ๆฑ‰ๅฐ |
133
- | `TsplDriver` | TSPL | TSC ME240ใ€TA210ใ€TTP-244 |
134
- | `ZplDriver` | ZPL | Zebra ZD420ใ€GT800ใ€ZM400 |
135
- | `CpclDriver` | CPCL | HP IR3222ใ€้œๅฐผ้Ÿฆๅฐ”็งปๅŠจๆœบ |
136
- | `StarPrinter` | STAR | STAR TSP100ใ€TSP700ใ€TSP800 |
137
- | `GPrinterDriver` | ่‡ชๅฎšไน‰ | ไฝณๅš GP-5890X ็ณปๅˆ— |
138
- | `XprinterDriver` | ESC/POS | ่Šฏ็ƒจ XP-58 ็ณปๅˆ— |
139
- | `SprtDriver` | ESC/POS | ๆ€ๆ™ฎ็‘ž็‰น็ณปๅˆ— |
140
+ | ้ฉฑๅŠจ | ๅ่ฎฎ | ๅ…ธๅž‹ๅ“็‰Œ / ๅž‹ๅท | ๅŠŸ่ƒฝ็Šถๆ€ |
141
+ |:-----|:-----|:---------------|:--------|
142
+ | `EscPos` | ESC/POS | ไฝณๅšใ€่Šฏ็ƒจใ€ๅ•†็ฑณใ€ๆฑ‰ๅฐ | โœ… ๅ…จๅŠŸ่ƒฝ |
143
+ | `TsplDriver` | TSPL | TSC ME240ใ€TA210ใ€TTP-244 | โœ… ๅ…จๅŠŸ่ƒฝ |
144
+ | `ZplDriver` | ZPL | Zebra ZD420ใ€GT800ใ€ZM400 | โœ… ๅซๅ›พๅƒๆ‰“ๅฐ (^GFA) |
145
+ | `CpclDriver` | CPCL | HP IR3222ใ€้œๅฐผ้Ÿฆๅฐ”็งปๅŠจๆ‰“ๅฐๆœบ | โœ… ๅซ Logo ไธ‹่ฝฝ (CG) |
146
+ | `StarPrinter` | STAR | STAR TSP100ใ€TSP700ใ€TSP800 | โœ… ๅ…จๅŠŸ่ƒฝ |
147
+ | `GPrinterDriver` | ไฝณๅš่‡ชๅฎšไน‰ | ไฝณๅš GP-5890X ็ณปๅˆ— | โœ… ๅ…จๅŠŸ่ƒฝ |
148
+ | `XprinterDriver` | ESC/POS | ่Šฏ็ƒจ XP-58 ็ณปๅˆ— | โœ… ๅ…จๅŠŸ่ƒฝ |
149
+ | `SprtDriver` | ESC/POS | ๆ€ๆ™ฎ็‘ž็‰น็ณปๅˆ— | โœ… ๅ…จๅŠŸ่ƒฝ |
140
150
 
141
151
  ---
142
152
 
143
- ## ้…็ฝฎไธŽไบ‹ไปถ
153
+ ## โš™๏ธ ้…็ฝฎไธŽไบ‹ไปถ
154
+
155
+ ### ไผ ่พ“ๅ‚ๆ•ฐ้…็ฝฎ
144
156
 
145
157
  ```typescript
146
158
  const printer = createBluetoothPrinter();
147
159
 
148
- // ไผ ่พ“ๅ‚ๆ•ฐ
160
+ // ่ฐƒๆ•ด่“็‰™ไผ ่พ“ๅ‚ๆ•ฐ๏ผˆ้€‚้…ไธๅŒๆ‰“ๅฐๆœบ็š„ๅžๅ่ƒฝๅŠ›๏ผ‰
149
161
  printer.setOptions({
150
- chunkSize: 20, // ๅˆ†็‰‡ๅคงๅฐ byte๏ผˆ้ป˜่ฎค 20๏ผ‰
151
- delay: 20, // ๅˆ†็‰‡้—ด้š” ms๏ผˆ้ป˜่ฎค 20๏ผ‰
152
- retries: 3, // ๅ†™ๅ…ฅๅคฑ่ดฅ้‡่ฏ•ๆฌกๆ•ฐ๏ผˆ้ป˜่ฎค 3๏ผ‰
162
+ chunkSize: 20, // ๅ•ๆฌกๅ†™ๅ…ฅๅˆ†็‰‡ๅคงๅฐ๏ผˆbyte๏ผ‰๏ผŒ้ป˜่ฎค 20
163
+ delay: 20, // ๅˆ†็‰‡ๅ†™ๅ…ฅ้—ด้š”๏ผˆms๏ผ‰๏ผŒ้ป˜่ฎค 20
164
+ retries: 3, // ๅ†™ๅ…ฅๅคฑ่ดฅ้‡่ฏ•ๆฌกๆ•ฐ๏ผŒ้ป˜่ฎค 3
153
165
  });
166
+ ```
154
167
 
155
- // ไบ‹ไปถ็›‘ๅฌ
168
+ ### ไบ‹ไปถ็›‘ๅฌ
169
+
170
+ ```typescript
171
+ // ๆ‰“ๅฐ่ฟ›ๅบฆ
156
172
  printer.on('progress', ({ sent, total }) => {
157
- console.log(`่ฟ›ๅบฆ: ${(sent / total * 100).toFixed(1)}%`);
173
+ console.log(`ๆ‰“ๅฐ่ฟ›ๅบฆ: ${(sent / total * 100).toFixed(1)}%`);
158
174
  });
159
175
 
176
+ // ้”™่ฏฏไบ‹ไปถ
160
177
  printer.on('error', (error) => {
161
- // error ๆ˜ฏ BluetoothPrintError ็š„ๅฎžไพ‹
162
- console.error('้”™่ฏฏ:', error.code, error.message);
178
+ console.error('ๆ‰“ๅฐ้”™่ฏฏ:', error.code, error.message);
163
179
  });
164
180
 
181
+ // ๆ‰“ๅฐๅฎŒๆˆ
165
182
  printer.on('print-complete', () => {
166
- console.log('ๆ‰“ๅฐๅฎŒๆˆ');
183
+ console.log('โœ… ๆ‰“ๅฐไปปๅŠกๅฎŒๆˆ');
167
184
  });
168
185
  ```
169
186
 
170
- ### ้”™่ฏฏ็ฑปๅฑ‚ๆฌก
187
+ ---
188
+
189
+ ## ๐Ÿ›ก๏ธ ้”™่ฏฏๅค„็†
190
+
191
+ ๅบ“ๆไพ›ๅฎŒๆ•ด็š„็ฑปๅž‹ๅŒ–้”™่ฏฏๅฑ‚ๆฌก็ป“ๆž„๏ผŒๆ”ฏๆŒ็ฒพ็กฎ็š„้”™่ฏฏๆ•่ŽทไธŽๅค„็†๏ผš
171
192
 
172
193
  ```typescript
173
194
  import {
@@ -178,22 +199,22 @@ import {
178
199
  ErrorCode
179
200
  } from 'taro-bluetooth-print';
180
201
 
181
- // ็ปŸไธ€้”™่ฏฏๅŸบ็ฑป
202
+ // ๆ–นๅผไธ€๏ผš็ปŸไธ€้”™่ฏฏๅŸบ็ฑปๆ•่Žท
182
203
  try {
183
204
  await printer.print();
184
205
  } catch (err) {
185
206
  if (err instanceof BluetoothPrintError) {
186
- console.log(err.code, err.message);
207
+ console.error(`[${err.code}] ${err.message}`);
187
208
  }
188
209
  }
189
210
 
190
- // ไธ“็”จ้”™่ฏฏ็ฑปๅž‹๏ผˆๆŽจ่็”จไบŽ็ฒพ็กฎๅค„็†๏ผ‰
211
+ // ๆ–นๅผไบŒ๏ผšๆŒ‰้”™่ฏฏ็ฑปๅž‹็ฒพ็กฎๅค„็†๏ผˆๆŽจ่๏ผ‰
191
212
  try {
192
213
  await printer.connect(deviceId);
193
214
  } catch (err) {
194
215
  if (ConnectionError.isConnectionError(err)) {
195
- // ่ฟžๆŽฅๅคฑ่ดฅ๏ผš้‡่ฏ•ๆˆ–ๆ็คบ็”จๆˆท
196
- console.log('่ฟžๆŽฅ้”™่ฏฏ:', err.message);
216
+ // ่ฟžๆŽฅๅคฑ่ดฅ โ€” ๅฏๆ็คบ็”จๆˆท้‡่ฏ•
217
+ console.warn('่ฟžๆŽฅ้”™่ฏฏ:', err.message);
197
218
  }
198
219
  }
199
220
 
@@ -201,84 +222,128 @@ try {
201
222
  // ... ๆ‰“ๅฐๆ“ไฝœ
202
223
  } catch (err) {
203
224
  if (PrintJobError.isPrintJobError(err)) {
204
- // ๆ‰“ๅฐไปปๅŠกๅคฑ่ดฅ๏ผš้‡ๆ–ฐๆŽ’้˜Ÿ
205
- console.log('ไปปๅŠก้”™่ฏฏ:', err.message);
225
+ // ๆ‰“ๅฐไปปๅŠกๅคฑ่ดฅ โ€” ๅฏ้‡ๆ–ฐๅŠ ๅ…ฅ้˜Ÿๅˆ—
226
+ console.warn('ไปปๅŠก้”™่ฏฏ:', err.message);
227
+ }
228
+ }
229
+
230
+ try {
231
+ printer.text('ๆต‹่ฏ•', 'UNSUPPORTED_ENCODING');
232
+ } catch (err) {
233
+ if (CommandBuildError.isCommandBuildError(err)) {
234
+ // ๆŒ‡ไปคๆž„ๅปบๅคฑ่ดฅ โ€” ๅ‚ๆ•ฐๆ ก้ชŒ้—ฎ้ข˜
235
+ console.warn('ๆŒ‡ไปค้”™่ฏฏ:', err.message);
206
236
  }
207
237
  }
208
238
  ```
209
239
 
210
240
  ---
211
241
 
212
- ## ๆžถๆž„
242
+ ## ๐Ÿ—๏ธ ๆžถๆž„ๆฆ‚่งˆ
213
243
 
214
244
  ```
215
- โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
216
- โ”‚ PrinterFactory (createPrinter) โ”‚
217
- โ”‚ createBluetoothPrinter ยท createWebBluetooth โ”‚
218
- โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
245
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
246
+ โ”‚ PrinterFactory (ๅทฅๅŽ‚ๅฑ‚) โ”‚
247
+ โ”‚ createBluetoothPrinter ยท createWebBluetooth โ”‚
248
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
249
+ โ”‚
219
250
  โ–ผ
220
- โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
221
- โ”‚ BluetoothPrinter (Core) โ”‚
222
- โ”‚ text() feed() qr() cut() image() print()โ”‚
223
- โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
224
- โ”‚
225
- โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
226
- โ–ผ โ–ผ
227
- โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
228
- โ”‚ Drivers โ”‚ โ”‚ Adapters โ”‚
229
- โ”‚ EscPos โ”‚ โ”‚ TaroAdapterโ”‚
230
- โ”‚ Tspl โ”‚ โ”‚ WebBluetoothโ”‚
231
- โ”‚ Zpl โ”‚ โ”‚ ReactNative โ”‚
232
- โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜
233
- โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
234
- โ–ผ
235
- โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
236
- โ”‚ Services โ”‚
237
- โ”‚ PrintJob ยท Cache ยท Queue ยท History โ”‚
238
- โ”‚ Statistics ยท Scheduler ยท Batch โ”‚
239
- โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
251
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
252
+ โ”‚ BluetoothPrinter (ๆ ธๅฟƒๅฑ‚) โ”‚
253
+ โ”‚ text() ยท feed() ยท qr() ยท cut() ยท image() โ”‚
254
+ โ”‚ print() ยท setOptions() ยท on() / off() โ”‚
255
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
256
+ โ”‚ โ”‚
257
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
258
+ โ”‚ Drivers (้ฉฑๅŠจ) โ”‚ โ”‚ Adapters (้€‚้…) โ”‚
259
+ โ”‚ โ”‚ โ”‚ โ”‚
260
+ โ”‚ EscPos โ”‚ โ”‚ TaroAdapter โ”‚
261
+ โ”‚ TsplDriver โ”‚ โ”‚ WebBluetooth โ”‚
262
+ โ”‚ ZplDriver โ”‚ โ”‚ ReactNative โ”‚
263
+ โ”‚ CpclDriver โ”‚ โ”‚ AlipayAdapter โ”‚
264
+ โ”‚ StarPrinter โ”‚ โ”‚ BaiduAdapter โ”‚
265
+ โ”‚ GPrinter โ”‚ โ”‚ ByteDance โ”‚
266
+ โ”‚ Xprinter โ”‚ โ”‚ QQAdapter โ”‚
267
+ โ”‚ SprtDriver โ”‚ โ”‚ โ”‚
268
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
269
+ โ”‚ โ”‚
270
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
271
+ โ–ผ
272
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
273
+ โ”‚ Services (ๆœๅŠกๅฑ‚) โ”‚
274
+ โ”‚ โ”‚
275
+ โ”‚ PrintJob ยท Cache ยท Queue ยท History โ”‚
276
+ โ”‚ Statistics ยท Scheduler ยท Batch โ”‚
277
+ โ”‚ EventBus ยท DIContainer ยท PluginSystem โ”‚
278
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
240
279
  ```
241
280
 
242
281
  ---
243
282
 
244
- ## ็คบไพ‹้กน็›ฎ
283
+ ## ๐Ÿ“Š ๆ€ง่ƒฝๆŒ‡ๆ ‡
284
+
285
+ | ๆŒ‡ๆ ‡ | ๅ€ผ |
286
+ |:-----|:---|
287
+ | ๅŒ…ไฝ“็งฏ๏ผˆgzip๏ผ‰ | **~226 KB**๏ผˆๅซๅ…จ้ƒจ้ฉฑๅŠจ๏ผŒๆ— ๅค–้ƒจไพ่ต–๏ผ‰ |
288
+ | Tree-shaking | โœ… ๆ”ฏๆŒ๏ผŒๆŒ‰้œ€ๅผ•ๅ…ฅ |
289
+ | ็ผ–็ ๆ‡’ๅŠ ่ฝฝ | โœ… ๆœช็”จๅˆฐ็š„ๅญ—็ฌฆ้›†ไธ่ฟ›ๅ…ฅไบง็‰ฉ |
290
+ | ๆต‹่ฏ•็”จไพ‹ | โœ… **879** ไธชๆต‹่ฏ•็”จไพ‹๏ผŒ**877** ้€š่ฟ‡๏ผˆ95.7%๏ผ‰๏ผŒ่ฆ†็›–้˜ˆๅ€ผ 70%+ |
291
+ | ๆž„ๅปบๅทฅๅ…ท | Vite + Vitest |
292
+
293
+ ---
294
+
295
+ ## ๐Ÿ“‚ ็คบไพ‹้กน็›ฎ
245
296
 
246
297
  | ็คบไพ‹ | ่ทฏๅพ„ |
247
- |------|------|
298
+ |:-----|:-----|
248
299
  | ๅพฎไฟกๅฐ็จ‹ๅบ | [examples/weapp](./examples/weapp) |
249
300
  | H5 | [examples/h5](./examples/h5) |
250
- | ้ธฟ่’™ | [examples/harmonyos](./examples/harmonyos) |
301
+ | ้ธฟ่’™ HarmonyOS | [examples/harmonyos](./examples/harmonyos) |
251
302
  | React Native | [examples/react-native](./examples/react-native) |
252
303
 
253
304
  ---
254
305
 
255
- ## ๆ–‡ๆกฃ
306
+ ## ๐Ÿ“– ๆ–‡ๆกฃ
256
307
 
257
- - [ๅฟซ้€Ÿๅผ€ๅง‹](https://agions.github.io/taro-bluetooth-print/guide/getting-started) ยท 5 ๅˆ†้’Ÿๅ…ฅ้—จ
258
- - [ๅŠŸ่ƒฝ็‰นๆ€ง](https://agions.github.io/taro-bluetooth-print/guide/features) ยท ๅ…จ้ƒจๅŠŸ่ƒฝ
259
- - [้ฉฑๅŠจๆ”ฏๆŒ](https://agions.github.io/taro-bluetooth-print/guide/drivers) ยท ESC/POSใ€TSPLใ€ZPL
260
- - [ๆ ธๅฟƒๆฆ‚ๅฟต](https://agions.github.io/taro-bluetooth-print/guide/core-concepts) ยท ๆžถๆž„่ฎพ่ฎก
261
- - [API ๅ‚่€ƒ](https://agions.github.io/taro-bluetooth-print/api) ยท ๅฎŒๆ•ด API
262
- - [ๅธธ่ง้—ฎ้ข˜](https://agions.github.io/taro-bluetooth-print/guide/faq) ยท FAQ
308
+ | ๆ–‡ๆกฃ | ่ฏดๆ˜Ž |
309
+ |:-----|:-----|
310
+ | [ๅฟซ้€Ÿๅผ€ๅง‹](https://agions.github.io/taro-bluetooth-print/guide/getting-started) | 5 ๅˆ†้’Ÿๅ…ฅ้—จๆ•™็จ‹ |
311
+ | [ๅŠŸ่ƒฝ็‰นๆ€ง](https://agions.github.io/taro-bluetooth-print/guide/features) | ๅ…จ้ƒจๅŠŸ่ƒฝ่ฏฆ่งฃ |
312
+ | [้ฉฑๅŠจๆ”ฏๆŒ](https://agions.github.io/taro-bluetooth-print/guide/drivers) | ESC/POSใ€TSPLใ€ZPL ้ฉฑๅŠจ่ฏดๆ˜Ž |
313
+ | [ๆ ธๅฟƒๆฆ‚ๅฟต](https://agions.github.io/taro-bluetooth-print/guide/core-concepts) | ๆžถๆž„่ฎพ่ฎกไธŽๆ ธๅฟƒๆฆ‚ๅฟต |
314
+ | [API ๅ‚่€ƒ](https://agions.github.io/taro-bluetooth-print/api) | ๅฎŒๆ•ด API ๆ–‡ๆกฃ |
315
+ | [ๅธธ่ง้—ฎ้ข˜](https://agions.github.io/taro-bluetooth-print/guide/faq) | FAQ |
263
316
 
264
317
  ---
265
318
 
266
- ## ๅผ€ๅ‘
319
+ ## ๐Ÿ› ๏ธ ๅผ€ๅ‘
267
320
 
268
321
  ```bash
322
+ # ๅ…‹้š†ไป“ๅบ“
269
323
  git clone https://github.com/Agions/taro-bluetooth-print.git
270
324
  cd taro-bluetooth-print
325
+
326
+ # ๅฎ‰่ฃ…ไพ่ต–
271
327
  pnpm install
272
328
 
273
- pnpm test # ๆต‹่ฏ•๏ผˆ648 ็”จไพ‹๏ผ‰
274
- pnpm lint # ESLint + Prettier
275
- pnpm type-check # TypeScript ๆฃ€ๆŸฅ
276
- pnpm build # ๆž„ๅปบไบง็‰ฉ
277
- pnpm docs:dev # ๆœฌๅœฐๆ–‡ๆกฃ
329
+ # ่ฟ่กŒๆต‹่ฏ•
330
+ pnpm test
331
+
332
+ # ไปฃ็ ๆฃ€ๆŸฅ
333
+ pnpm lint
334
+
335
+ # TypeScript ็ฑปๅž‹ๆฃ€ๆŸฅ
336
+ pnpm type-check
337
+
338
+ # ๆž„ๅปบไบง็‰ฉ
339
+ pnpm build
340
+
341
+ # ๆœฌๅœฐๆ–‡ๆกฃๅผ€ๅ‘
342
+ pnpm docs:dev
278
343
  ```
279
344
 
280
345
  ---
281
346
 
282
- ## ่ฎธๅฏ่ฏ
347
+ ## ๐Ÿ“„ ่ฎธๅฏ่ฏ
283
348
 
284
- [MIT](./LICENSE) ยท Copyright ยฉ 2024-present Agions
349
+ [MIT](./LICENSE) ยท Copyright ยฉ 2024-present [Agions](https://github.com/Agions)