@widget-js/cli 1.1.8 → 1.1.10
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/src/widgets/test/Test.widget.ts +39 -0
- package/src/widgets/test/TestConfigView.vue +41 -0
- package/src/widgets/test/TestWidget.vue +7 -0
- package/src/widgets/test/TestWidgetRoutes.ts +27 -0
- package/src/widgets/test/TestWidgetView.vue +14 -0
- package/src/widgets/widget-router.ts +8 -0
- package/template/WidgetPackage.ejs +22 -0
- 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
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Widget, WidgetKeyword } from '@widget-js/core';
|
|
2
|
+
//TODO 修改组件信息,标题,描述,关键词
|
|
3
|
+
const name = 'cn.widgetjs.widgets.hotspot.test';
|
|
4
|
+
//组件标题
|
|
5
|
+
const title = { 'zh-CN': '123' };
|
|
6
|
+
//组件描述
|
|
7
|
+
const description = { 'zh-CN': '' };
|
|
8
|
+
//组件关键词
|
|
9
|
+
const keywords = [WidgetKeyword.RECOMMEND];
|
|
10
|
+
//组件路由地址
|
|
11
|
+
const url = '/widget/test';
|
|
12
|
+
//配置页路由地址
|
|
13
|
+
const configUrl = '/widget/config/test';
|
|
14
|
+
//组件关键词
|
|
15
|
+
const TestWidgetDefine = new Widget({
|
|
16
|
+
name: name,
|
|
17
|
+
title: title,
|
|
18
|
+
description: description,
|
|
19
|
+
keywords: keywords,
|
|
20
|
+
lang: 'zh-CN',
|
|
21
|
+
width: 2,
|
|
22
|
+
height: 3,
|
|
23
|
+
minWidth: 1,
|
|
24
|
+
maxWidth: 3,
|
|
25
|
+
minHeight: 2,
|
|
26
|
+
maxHeight: 3,
|
|
27
|
+
routes: [
|
|
28
|
+
{
|
|
29
|
+
url: url,
|
|
30
|
+
name: 'index',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
url: configUrl,
|
|
34
|
+
name: 'config',
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export default TestWidgetDefine;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<widget-edit-dialog
|
|
3
|
+
:widget-params="widgetParams"
|
|
4
|
+
:option="widgetConfigOption"
|
|
5
|
+
:widget-data="widgetData"
|
|
6
|
+
@confirm="onSaveClick()"
|
|
7
|
+
>
|
|
8
|
+
<template v-slot:form>
|
|
9
|
+
<!-- TODO 这里写自定义表单内容 -->
|
|
10
|
+
</template>
|
|
11
|
+
</widget-edit-dialog>
|
|
12
|
+
</template>
|
|
13
|
+
|
|
14
|
+
<script lang="ts" setup>
|
|
15
|
+
import {
|
|
16
|
+
useWidget,
|
|
17
|
+
WidgetConfigOption,
|
|
18
|
+
WidgetEditDialog,
|
|
19
|
+
} from '@widget-js/vue3';
|
|
20
|
+
import { WidgetData, WidgetDataApi } from '@widget-js/core';
|
|
21
|
+
import { reactive } from 'vue';
|
|
22
|
+
|
|
23
|
+
const { widgetData, widgetParams } = useWidget(WidgetData);
|
|
24
|
+
|
|
25
|
+
//修改成需要设置组件参数配置
|
|
26
|
+
const widgetConfigOption = reactive(
|
|
27
|
+
new WidgetConfigOption({
|
|
28
|
+
custom: true,
|
|
29
|
+
backgroundColor: true,
|
|
30
|
+
borderRadius: true,
|
|
31
|
+
preview: false,
|
|
32
|
+
})
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
const onSaveClick = async () => {
|
|
36
|
+
await WidgetDataApi.save(widgetData);
|
|
37
|
+
window.close();
|
|
38
|
+
};
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
<style scoped></style>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import TestWidgetDefine from './Test.widget';
|
|
2
|
+
|
|
3
|
+
const url = TestWidgetDefine.getIndexRoute().url;
|
|
4
|
+
const name = TestWidgetDefine.name;
|
|
5
|
+
|
|
6
|
+
const configUrl = TestWidgetDefine.getConfigRoute()!.url;
|
|
7
|
+
|
|
8
|
+
const TestWidgetRoutes = [
|
|
9
|
+
{
|
|
10
|
+
path: url,
|
|
11
|
+
name: `${name}`,
|
|
12
|
+
component: () =>
|
|
13
|
+
import(
|
|
14
|
+
/* webpackChunkName: "cn.widgetjs.widgets.hotspot.test" */ './TestWidgetView.vue'
|
|
15
|
+
),
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
path: configUrl,
|
|
19
|
+
name: `${name}.config`,
|
|
20
|
+
component: () =>
|
|
21
|
+
import(
|
|
22
|
+
/* webpackChunkName: "cn.widgetjs.widgets.hotspot.test.config" */ './TestConfigView.vue'
|
|
23
|
+
),
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
export default TestWidgetRoutes;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<!-- TODO:组件页面,这里编写组件业务逻辑-->
|
|
3
|
+
<test-widget></test-widget>
|
|
4
|
+
</template>
|
|
5
|
+
|
|
6
|
+
<script lang="ts" setup>
|
|
7
|
+
import { WidgetData } from '@widget-js/core';
|
|
8
|
+
import TestWidget from './TestWidget.vue';
|
|
9
|
+
import { useWidget } from '@widget-js/vue3';
|
|
10
|
+
|
|
11
|
+
const { widgetData, widgetParams } = useWidget(WidgetData);
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<style scoped></style>
|
|
@@ -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
|
+
});
|
|
@@ -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
|
});
|