@widget-js/cli 1.1.8 → 1.1.11
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/.editorconfig +1 -1
- package/.idea/inspectionProfiles/Project_Default.xml +6 -0
- package/.idea/prettier.xml +6 -0
- package/lib/chunk-36QWOCKO.js +23 -0
- package/lib/chunk-3GPAHQ6O.js +18 -0
- package/lib/chunk-KAH4IVEE.js +73 -0
- package/lib/createWidget-QSHTD2M7.js +205 -0
- package/lib/dependencies-UDW4LKDQ.js +81 -0
- package/lib/index.js +27 -155696
- package/lib/init-SS2RG3IV.js +74 -0
- package/lib/release-HXCPKDIN.js +212 -0
- package/package.json +9 -5
- package/readme.md +3 -4
- package/src/createWidget.ts +146 -140
- package/src/dependencies/localDependencies.ts +2 -2
- package/src/dependencies/remoteDependencies.ts +5 -10
- package/src/index.ts +8 -7
- package/src/init/init.ts +76 -0
- package/src/release/ftp.ts +2 -2
- package/src/utils/EJSUtils.ts +25 -0
- package/src/utils.ts +66 -12
- package/template/WidgetDefine.ejs +5 -13
- package/template/WidgetPackage.ejs +22 -0
- package/template/WidgetRoutes.ejs +5 -5
- package/widget.package.ts +23 -0
- package/widget.ts +13 -15
package/src/utils.ts
CHANGED
|
@@ -1,26 +1,80 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import process from "process";
|
|
3
3
|
import fs from "fs";
|
|
4
|
+
import packageJson from "package-json";
|
|
4
5
|
|
|
5
6
|
export const widgetPackages: { [key: string]: string } = {
|
|
6
|
-
|
|
7
|
+
"@widget-js/core": "", "@widget-js/vue3": "", "@widget-js/cli": "", "@widget-js/vite-plugin-widget": ""
|
|
7
8
|
};
|
|
8
9
|
export default function exit(code: number = 0) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
if (exports.exitProcess) {
|
|
11
|
+
process.exit(code);
|
|
12
|
+
} else if (code > 0) {
|
|
13
|
+
throw new Error(`Process exited with code ${code}`);
|
|
14
|
+
}
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
export function getPackagePath() {
|
|
17
|
-
|
|
18
|
+
return path.join(process.cwd(), "package.json");
|
|
18
19
|
}
|
|
19
20
|
|
|
20
|
-
export function getPackageJson() {
|
|
21
|
-
return JSON.parse(fs.readFileSync(getPackagePath()).toString());
|
|
22
|
-
}
|
|
23
21
|
|
|
24
|
-
export
|
|
25
|
-
|
|
22
|
+
export class Utils {
|
|
23
|
+
static async getRemoteVersion(packageName: string): Promise<string> {
|
|
24
|
+
const metadata = await packageJson(packageName);
|
|
25
|
+
let version = metadata["version"];
|
|
26
|
+
return version as string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
static getPackagePath() {
|
|
30
|
+
return path.join(process.cwd(), "package.json");
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
static getPackageJson() {
|
|
34
|
+
return JSON.parse(fs.readFileSync(this.getPackagePath()).toString());
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
static getPackageVersion() {
|
|
38
|
+
return this.getPackageJson()["version"];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* 检查包名是否合法,包名格式一般为 倒置域名与java包类似
|
|
43
|
+
* 1.只能包含小写字母、数字、下划线、小数点。
|
|
44
|
+
* 2.不能以小数点结尾
|
|
45
|
+
* 3.不能包含连续的小数点
|
|
46
|
+
* @param name
|
|
47
|
+
*/
|
|
48
|
+
static checkPackageName(name: string):boolean {
|
|
49
|
+
// 检查包名是否以小数点结尾
|
|
50
|
+
if (name.endsWith('.')) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// 检查包名是否包含无效字符
|
|
55
|
+
const invalidCharacters = /[\\/:*?\"<>| ]/g;
|
|
56
|
+
if (name.match(invalidCharacters)) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// 检查包名是否至少包含一个子段
|
|
61
|
+
const segments = name.split('.');
|
|
62
|
+
if (segments.length < 2) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// 检查每个子段是否以字母开头
|
|
67
|
+
for (const segment of segments) {
|
|
68
|
+
if (!segment.match(/^[a-z]/)) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// 检查子段是否包含连续的小数点
|
|
73
|
+
if (segment.includes('.' + '.')) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
26
80
|
}
|
|
@@ -8,9 +8,9 @@ const description = {"zh-CN": ""};
|
|
|
8
8
|
//组件关键词
|
|
9
9
|
const keywords = [WidgetKeyword.RECOMMEND];
|
|
10
10
|
//组件路由地址
|
|
11
|
-
const
|
|
11
|
+
const path = "/widget/<%= snakeCaseName %>";
|
|
12
12
|
//配置页路由地址
|
|
13
|
-
const
|
|
13
|
+
const configPagePath = <% if (configurable) { %>"/widget/config/<%= snakeCaseName %>"<% } else { %>undefined<% } %>;
|
|
14
14
|
//组件关键词
|
|
15
15
|
const <%= name %>WidgetDefine = new Widget({
|
|
16
16
|
name: name,
|
|
@@ -24,17 +24,9 @@ minWidth: <%= minWidth %>,
|
|
|
24
24
|
maxWidth: <%= maxWidth %>,
|
|
25
25
|
minHeight: <%= minHeight %>,
|
|
26
26
|
maxHeight: <%= maxHeight %>,
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
name: 'index'
|
|
31
|
-
},
|
|
32
|
-
<% if (configurable) { %> {
|
|
33
|
-
url: configUrl,
|
|
34
|
-
name: 'config'
|
|
35
|
-
},
|
|
36
|
-
<% } %>
|
|
37
|
-
]
|
|
27
|
+
previewImage: "修改为组件预览图地址",
|
|
28
|
+
path,
|
|
29
|
+
configPagePath
|
|
38
30
|
})
|
|
39
31
|
|
|
40
32
|
export default <%= name %>WidgetDefine;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import {WidgetPackage} from '@widget-js/core';
|
|
2
|
+
|
|
3
|
+
//TODO 完善组件包信息
|
|
4
|
+
export default new WidgetPackage({
|
|
5
|
+
author: '修改成你的信息',
|
|
6
|
+
description: {
|
|
7
|
+
'zh-CN': '修改成你的组件描述',
|
|
8
|
+
},
|
|
9
|
+
entry: 'index.html',
|
|
10
|
+
hash: true,
|
|
11
|
+
homepage: '',
|
|
12
|
+
name: '<%= name %>',
|
|
13
|
+
remoteEntry: '',
|
|
14
|
+
remotePackage: '',
|
|
15
|
+
title: {
|
|
16
|
+
'zh-CN': '修改成你的组件标题',
|
|
17
|
+
},
|
|
18
|
+
version: '1.0.0',
|
|
19
|
+
devOptions: {
|
|
20
|
+
folder: './src/widgets/'
|
|
21
|
+
}
|
|
22
|
+
});
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import <%= name %>WidgetDefine from "./<%= name %>.widget";
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const path = <%= name %>WidgetDefine.path;
|
|
4
4
|
const name = <%= name %>WidgetDefine.name;
|
|
5
5
|
<% if (configurable) { %>
|
|
6
|
-
const
|
|
6
|
+
const configPagePath = <%= name %>WidgetDefine.configPagePath;
|
|
7
7
|
|
|
8
8
|
const <%= name %>WidgetRoutes = [
|
|
9
9
|
{
|
|
10
|
-
path:
|
|
10
|
+
path: path,
|
|
11
11
|
name: `${name}`,
|
|
12
12
|
component: () => import(/* webpackChunkName: "<%= widgetName %>" */ './<%= name %>WidgetView.vue')
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
|
-
path:
|
|
15
|
+
path: configPagePath,
|
|
16
16
|
name: `${name}.config`,
|
|
17
17
|
component: () => import(/* webpackChunkName: "<%= widgetName %>.config" */ './<%= name %>ConfigView.vue')
|
|
18
18
|
}
|
|
@@ -20,7 +20,7 @@ const <%= name %>WidgetRoutes = [
|
|
|
20
20
|
<% } else { %>
|
|
21
21
|
const <%= name %>WidgetRoutes = [
|
|
22
22
|
{
|
|
23
|
-
path:
|
|
23
|
+
path: path,
|
|
24
24
|
name: `${name}`,
|
|
25
25
|
component: () => import(/* webpackChunkName: "<%= widgetName %>" */ './<%= name %>WidgetView.vue')
|
|
26
26
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import {WidgetPackage} from "@widget-js/core";
|
|
2
|
+
|
|
3
|
+
export default new WidgetPackage({
|
|
4
|
+
author: "Neo Fu",
|
|
5
|
+
description: {
|
|
6
|
+
"zh-CN": "包含知乎、B站、抖音、微博等平台的热搜组件。",
|
|
7
|
+
},
|
|
8
|
+
entry: "index.html",
|
|
9
|
+
hash: true,
|
|
10
|
+
homepage: "https://widgetjs.cn",
|
|
11
|
+
name: "cn.widgetjs.widgets.hotspot",
|
|
12
|
+
remoteEntry: "https://rtugeek.gitee.io/hotspot",
|
|
13
|
+
remotePackage: "https://rtugeek.gitee.io/hotspot/widget.json",
|
|
14
|
+
title: {
|
|
15
|
+
"zh-CN": "全网热点组件",
|
|
16
|
+
},
|
|
17
|
+
version: "1.0.0",
|
|
18
|
+
devOptions: {
|
|
19
|
+
folder: "./src/widgets/",
|
|
20
|
+
route: true,
|
|
21
|
+
devUrl: "http://localhost:5173/hotspot"
|
|
22
|
+
}
|
|
23
|
+
});
|
package/widget.ts
CHANGED
|
@@ -1,24 +1,22 @@
|
|
|
1
|
-
import {WidgetPackage} from
|
|
1
|
+
import { WidgetPackage } from '@widget-js/core';
|
|
2
2
|
|
|
3
|
+
//TODO 完善组件包信息
|
|
3
4
|
export default new WidgetPackage({
|
|
4
|
-
author:
|
|
5
|
+
author: '修改成你的信息',
|
|
5
6
|
description: {
|
|
6
|
-
|
|
7
|
+
'zh-CN': '修改成你的组件描述',
|
|
7
8
|
},
|
|
8
|
-
entry:
|
|
9
|
+
entry: 'index.html',
|
|
9
10
|
hash: true,
|
|
10
|
-
homepage:
|
|
11
|
-
name:
|
|
12
|
-
remoteEntry:
|
|
13
|
-
remotePackage:
|
|
11
|
+
homepage: '',
|
|
12
|
+
name: 'test',
|
|
13
|
+
remoteEntry: '',
|
|
14
|
+
remotePackage: '',
|
|
14
15
|
title: {
|
|
15
|
-
|
|
16
|
+
'zh-CN': '修改成你的组件标题',
|
|
16
17
|
},
|
|
17
|
-
|
|
18
|
-
version: "1.0.0",
|
|
18
|
+
version: '1.0.0',
|
|
19
19
|
devOptions: {
|
|
20
|
-
folder:
|
|
21
|
-
|
|
22
|
-
devUrl: "http://localhost:5173/hotspot"
|
|
23
|
-
}
|
|
20
|
+
folder: './src/widgets/',
|
|
21
|
+
},
|
|
24
22
|
});
|