Skip to content

Commit 7c887be

Browse files
committed
feat: 分词组件作为可选对等依赖
1 parent 8ea8eb3 commit 7c887be

File tree

3 files changed

+34
-2
lines changed

3 files changed

+34
-2
lines changed

CHANGELOG.md

+9
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@
22

33
----
44

5+
## 4.0.0-alpha.0
6+
7+
- optionalPeerDependencies nodejieba, @node-rs/jieba, and segmentit.
8+
- 打包为 esm 和 umd 格式。
9+
10+
## 3.1.0
11+
12+
- release 3.1.0, with output amd format.
13+
514
## 3.0.0-alpha.7 (2023-11-20)
615

716
- feat: dynamic import optional dependencies.

package.json

+13-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "pinyin",
3-
"version": "3.1.0",
3+
"version": "4.0.0-alpha.0",
44
"description": "汉语拼音转换工具。",
55
"main": "./dist/pinyin.js",
66
"module": "./dist/pinyin.mjs",
@@ -35,11 +35,22 @@
3535
"dependencies": {
3636
"commander": "~1.1.1"
3737
},
38-
"optionalDependencies": {
38+
"peerDependencies": {
3939
"@node-rs/jieba": "^1.6.0",
4040
"nodejieba": "2.5.2",
4141
"segmentit": "^2.0.3"
4242
},
43+
"peerDependenciesMeta": {
44+
"@node-rs/jieba": {
45+
"optional": true
46+
},
47+
"nodejieba": {
48+
"optional": true
49+
},
50+
"segmentit": {
51+
"optional": true
52+
}
53+
},
4354
"devDependencies": {
4455
"@babel/preset-env": "^7.15.6",
4556
"@babel/preset-typescript": "^7.15.0",

src/segment.ts

+12
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ export function segment(hans: string, segment?: IPinyinSegment): string[] {
1414
if (segment === "@node-rs/jieba") {
1515
// eslint-disable-next-line @typescript-eslint/no-var-requires
1616
const { load, cut /*, tag */ } = require("@node-rs/jieba");
17+
if (!load || !cut) {
18+
console.error("pinyin v4: \"@node-rs/jieba\" is peerDependencies");
19+
return [hans];
20+
}
1721
if (!nodeRsJiebaLoaded) {
1822
nodeRsJiebaLoaded = true;
1923
load();
@@ -26,6 +30,10 @@ export function segment(hans: string, segment?: IPinyinSegment): string[] {
2630
if (segment === "segmentit") {
2731
// eslint-disable-next-line @typescript-eslint/no-var-requires
2832
const { Segment, useDefault } = require("segmentit");
33+
if (!Segment) {
34+
console.error("pinyin v4: \"segmentit\" is peerDependencies");
35+
return [hans];
36+
}
2937
if (!segmentit) {
3038
segmentit = useDefault(new Segment());
3139
}
@@ -48,6 +56,10 @@ export function segment(hans: string, segment?: IPinyinSegment): string[] {
4856

4957
// eslint-disable-next-line @typescript-eslint/no-var-requires
5058
const nodejieba = require("nodejieba");
59+
if (!nodejieba) {
60+
console.error("pinyin v4: \"nodejieba\" is peerDependencies");
61+
return [hans];
62+
}
5163
// 默认使用 nodejieba (C++)
5264
// return nodejieba.tag(hans);
5365
// nodejieba 定义的类型返回值错误,先忽略。

0 commit comments

Comments
 (0)