@widget-js/cli 1.2.7 → 1.2.9
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/lib/{chunk-36QWOCKO.js → chunk-PCGVPLNI.js} +15 -7
- package/lib/{createWidget-UCZL7NIF.js → createWidget-MZL6DPP2.js} +5 -5
- package/lib/index.js +2 -2
- package/lib/{init-2NOIC3PQ.js → init-FUMP334Y.js} +23 -8
- package/package.json +4 -3
- package/src/createWidget.ts +4 -4
- package/src/init/init.ts +93 -76
- package/src/utils/EJSUtils.ts +17 -25
- package/src/utils/PrettierUtils.ts +11 -0
- package/template/WidgetPackage.ejs +0 -2
- package/vite.config.ts +14 -0
- package/widget.package.ts +0 -23
|
@@ -1,23 +1,31 @@
|
|
|
1
|
+
// src/utils/PrettierUtils.ts
|
|
2
|
+
import { format } from "prettier";
|
|
3
|
+
var PrettierUtils = class {
|
|
4
|
+
static async format(code, parser) {
|
|
5
|
+
return format(code, {
|
|
6
|
+
parser,
|
|
7
|
+
tabWidth: 2,
|
|
8
|
+
singleQuote: true
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
|
|
1
13
|
// src/utils/EJSUtils.ts
|
|
2
14
|
import path from "path";
|
|
3
15
|
import fs from "fs";
|
|
4
16
|
import ejs from "ejs";
|
|
5
|
-
import prettier from "prettier";
|
|
6
17
|
import { dirname } from "dirname-filename-esm";
|
|
7
18
|
var EJSUtils = class {
|
|
8
|
-
static renderToFile(templateFile, outputFile, parser, renderOptions) {
|
|
19
|
+
static async renderToFile(templateFile, outputFile, parser, renderOptions) {
|
|
9
20
|
const defineTemplatePath = path.join(dirname(import.meta), "../template", templateFile);
|
|
10
21
|
let defineTemplate = fs.readFileSync(defineTemplatePath, "utf8");
|
|
11
22
|
let code = ejs.render(defineTemplate, renderOptions);
|
|
12
|
-
const formattedEJSCode =
|
|
13
|
-
parser,
|
|
14
|
-
tabWidth: 2,
|
|
15
|
-
singleQuote: true
|
|
16
|
-
});
|
|
23
|
+
const formattedEJSCode = await PrettierUtils.format(code, parser);
|
|
17
24
|
fs.writeFileSync(outputFile, formattedEJSCode);
|
|
18
25
|
}
|
|
19
26
|
};
|
|
20
27
|
|
|
21
28
|
export {
|
|
29
|
+
PrettierUtils,
|
|
22
30
|
EJSUtils
|
|
23
31
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
EJSUtils
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-PCGVPLNI.js";
|
|
4
4
|
import {
|
|
5
5
|
promptChecker_default
|
|
6
6
|
} from "./chunk-3GPAHQ6O.js";
|
|
@@ -164,12 +164,12 @@ async function createWidget() {
|
|
|
164
164
|
const widgetFile = path.resolve(widgetDir, `${name}Widget.vue`);
|
|
165
165
|
const widgetViewFile = path.resolve(widgetDir, `${name}WidgetView.vue`);
|
|
166
166
|
const widgetRoutesFile = path.resolve(widgetDir, `${name}WidgetRoutes.ts`);
|
|
167
|
-
EJSUtils.renderToFile("WidgetDefine.ejs", widgetDefineFile, "typescript", renderOptions);
|
|
168
|
-
EJSUtils.renderToFile("WidgetView.ejs", widgetViewFile, "vue", renderOptions);
|
|
169
|
-
EJSUtils.renderToFile("WidgetRoutes.ejs", widgetRoutesFile, "typescript", renderOptions);
|
|
167
|
+
await EJSUtils.renderToFile("WidgetDefine.ejs", widgetDefineFile, "typescript", renderOptions);
|
|
168
|
+
await EJSUtils.renderToFile("WidgetView.ejs", widgetViewFile, "vue", renderOptions);
|
|
169
|
+
await EJSUtils.renderToFile("WidgetRoutes.ejs", widgetRoutesFile, "typescript", renderOptions);
|
|
170
170
|
if (configurable) {
|
|
171
171
|
const configFile = path.resolve(widgetDir, `${name}ConfigView.vue`);
|
|
172
|
-
EJSUtils.renderToFile("WidgetConfig.ejs", configFile, "vue", renderOptions);
|
|
172
|
+
await EJSUtils.renderToFile("WidgetConfig.ejs", configFile, "vue", renderOptions);
|
|
173
173
|
}
|
|
174
174
|
const routeFile = path.join(widgetFolder, "widget-router.ts");
|
|
175
175
|
let routeContent;
|
package/lib/index.js
CHANGED
|
@@ -11,7 +11,7 @@ var cliPackage = JSON.parse(fs.readFileSync(packageJsonPath).toString());
|
|
|
11
11
|
console.log(gradient.pastel.multiline(figlet.textSync("widget-cli", { horizontalLayout: "full" })));
|
|
12
12
|
program.version(`@widget-js/cli ${cliPackage.version}`).usage("<command> [options]");
|
|
13
13
|
program.command("create").description("Create new widget").action(async () => {
|
|
14
|
-
const createWidget = await import("./createWidget-
|
|
14
|
+
const createWidget = await import("./createWidget-MZL6DPP2.js");
|
|
15
15
|
await createWidget.default();
|
|
16
16
|
});
|
|
17
17
|
var dependenciesOption = new Option("-t, --type <type>").choices(["remote", "local"]);
|
|
@@ -20,7 +20,7 @@ program.command("dependencies").description("Set @widget-js dependencies to loca
|
|
|
20
20
|
await dependencies.default(options);
|
|
21
21
|
});
|
|
22
22
|
program.command("init").description("Initialize widget-js project").action(async () => {
|
|
23
|
-
const init = await import("./init-
|
|
23
|
+
const init = await import("./init-FUMP334Y.js");
|
|
24
24
|
await init.init();
|
|
25
25
|
});
|
|
26
26
|
var typeOption = new Option("-t, --type <type>").choices(["ftp", "oss"]);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
|
-
EJSUtils
|
|
3
|
-
|
|
2
|
+
EJSUtils,
|
|
3
|
+
PrettierUtils
|
|
4
|
+
} from "./chunk-PCGVPLNI.js";
|
|
4
5
|
import {
|
|
5
6
|
promptChecker_default
|
|
6
7
|
} from "./chunk-3GPAHQ6O.js";
|
|
@@ -25,23 +26,24 @@ async function addWidgetTs() {
|
|
|
25
26
|
{
|
|
26
27
|
type: "input",
|
|
27
28
|
name: "name",
|
|
28
|
-
message: chalk.blue("\
|
|
29
|
+
message: chalk.blue("\u7EC4\u4EF6\u5305\u540D \uFF08\u793A\u4F8B cn.widget.countdown\uFF09\uFF1A")
|
|
29
30
|
},
|
|
30
31
|
(answer) => {
|
|
31
32
|
const name2 = answer.name;
|
|
32
33
|
if (name2 == null || name2 === "") {
|
|
33
|
-
consola.log(chalk.red(
|
|
34
|
+
consola.log(chalk.red(`\u7EC4\u4EF6\u5305\u540D\u4E0D\u80FD\u4E3A\u7A7A`));
|
|
34
35
|
return false;
|
|
35
36
|
}
|
|
36
37
|
return true;
|
|
37
38
|
}
|
|
38
39
|
);
|
|
39
|
-
let widgetTs = path.join(process.cwd(), "widget.ts");
|
|
40
|
+
let widgetTs = path.join(process.cwd(), "widget.package.ts");
|
|
40
41
|
if (!fs.existsSync(widgetTs)) {
|
|
41
|
-
spinner.info("creating widget.ts");
|
|
42
|
-
EJSUtils.renderToFile("WidgetPackage.ejs", widgetTs, "typescript", { name });
|
|
43
|
-
spinner.succeed("Done! Be sure to replace the contents of widget.ts with your own.");
|
|
42
|
+
spinner.info("creating widget.package.ts");
|
|
43
|
+
await EJSUtils.renderToFile("WidgetPackage.ejs", widgetTs, "typescript", { name });
|
|
44
44
|
}
|
|
45
|
+
await addVitePlugin();
|
|
46
|
+
spinner.succeed("Done! Be sure to replace the contents of widget.package.ts with your own.");
|
|
45
47
|
}
|
|
46
48
|
async function addDependencies() {
|
|
47
49
|
spinner.info("Adding dependencies");
|
|
@@ -61,6 +63,19 @@ async function addDependencies() {
|
|
|
61
63
|
packageJson["devDependencies"] = devDependencies;
|
|
62
64
|
fs.writeFileSync(Utils.getPackagePath(), JSON.stringify(packageJson, null, 2));
|
|
63
65
|
}
|
|
66
|
+
async function addVitePlugin() {
|
|
67
|
+
spinner.info("Adding vite plugin");
|
|
68
|
+
const viteConfigPath = path.join(process.cwd(), "vite.config.ts");
|
|
69
|
+
if (!fs.existsSync(viteConfigPath)) {
|
|
70
|
+
spinner.warn("vite.config.ts not exists");
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
let viteConfig = fs.readFileSync(viteConfigPath).toString();
|
|
74
|
+
viteConfig = viteConfig.replace("import", `import widget from '@widget-js/vite-plugin-widget'
|
|
75
|
+
import`);
|
|
76
|
+
viteConfig = viteConfig.replace("vue()", `vue(),widget()`);
|
|
77
|
+
fs.writeFileSync(viteConfigPath, await PrettierUtils.format(viteConfig, "typescript"));
|
|
78
|
+
}
|
|
64
79
|
async function addDependency(packageName, dependencies) {
|
|
65
80
|
spinner.info(`Adding dependencies ${packageName}`);
|
|
66
81
|
if (dependencies[packageName]) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@widget-js/cli",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.9",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"author": "Neo Fu",
|
|
6
6
|
"license": "MIT",
|
|
@@ -34,11 +34,12 @@
|
|
|
34
34
|
"minimatch": "^9.0.3",
|
|
35
35
|
"ora": "^6.2.0",
|
|
36
36
|
"package-json": "^8.1.0",
|
|
37
|
-
"prettier": "^
|
|
37
|
+
"prettier": "^3.1.1",
|
|
38
38
|
"semver": "^7.3.8",
|
|
39
39
|
"shelljs": "^0.8.5",
|
|
40
40
|
"ssh2-sftp-client": "^9.1.0",
|
|
41
41
|
"ws": "^8.11.0",
|
|
42
|
+
"@widget-js/core": "^0.11.20",
|
|
42
43
|
"@widget-js/utils": "0.10.21"
|
|
43
44
|
},
|
|
44
45
|
"devDependencies": {
|
|
@@ -64,7 +65,7 @@
|
|
|
64
65
|
"webpack": "^5.75.0",
|
|
65
66
|
"webpack-cli": "^5.0.0",
|
|
66
67
|
"@widget-js/vue3": "^0.11.20",
|
|
67
|
-
"@widget-js/core": "0.11.
|
|
68
|
+
"@widget-js/core": "0.11.21"
|
|
68
69
|
},
|
|
69
70
|
"scripts": {
|
|
70
71
|
"build": "rimraf ./lib/ && tsup-node src/index.ts --format esm",
|
package/src/createWidget.ts
CHANGED
|
@@ -192,13 +192,13 @@ export default async function createWidget() {
|
|
|
192
192
|
const widgetViewFile = path.resolve(widgetDir, `${name}WidgetView.vue`)
|
|
193
193
|
const widgetRoutesFile = path.resolve(widgetDir, `${name}WidgetRoutes.ts`)
|
|
194
194
|
|
|
195
|
-
EJSUtils.renderToFile('WidgetDefine.ejs', widgetDefineFile, 'typescript', renderOptions)
|
|
195
|
+
await EJSUtils.renderToFile('WidgetDefine.ejs', widgetDefineFile, 'typescript', renderOptions)
|
|
196
196
|
// EJSUtils.renderToFile('Widget.ejs', widgetFile, 'vue', renderOptions)
|
|
197
|
-
EJSUtils.renderToFile('WidgetView.ejs', widgetViewFile, 'vue', renderOptions)
|
|
198
|
-
EJSUtils.renderToFile('WidgetRoutes.ejs', widgetRoutesFile, 'typescript', renderOptions)
|
|
197
|
+
await EJSUtils.renderToFile('WidgetView.ejs', widgetViewFile, 'vue', renderOptions)
|
|
198
|
+
await EJSUtils.renderToFile('WidgetRoutes.ejs', widgetRoutesFile, 'typescript', renderOptions)
|
|
199
199
|
if (configurable) {
|
|
200
200
|
const configFile = path.resolve(widgetDir, `${name}ConfigView.vue`)
|
|
201
|
-
EJSUtils.renderToFile('WidgetConfig.ejs', configFile, 'vue', renderOptions)
|
|
201
|
+
await EJSUtils.renderToFile('WidgetConfig.ejs', configFile, 'vue', renderOptions)
|
|
202
202
|
}
|
|
203
203
|
// 注册路由
|
|
204
204
|
const routeFile = path.join(widgetFolder, 'widget-router.ts')
|
package/src/init/init.ts
CHANGED
|
@@ -1,76 +1,93 @@
|
|
|
1
|
-
import {Utils} from
|
|
2
|
-
import path from
|
|
3
|
-
import process from
|
|
4
|
-
import fs from
|
|
5
|
-
import consola from
|
|
6
|
-
import promptChecker from
|
|
7
|
-
import chalk from
|
|
8
|
-
import {EJSUtils} from
|
|
9
|
-
import ora from
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
1
|
+
import {Utils} from '../utils'
|
|
2
|
+
import path from 'path'
|
|
3
|
+
import process from 'process'
|
|
4
|
+
import fs from 'fs'
|
|
5
|
+
import consola from 'consola'
|
|
6
|
+
import promptChecker from '../promts/promptChecker'
|
|
7
|
+
import chalk from 'chalk'
|
|
8
|
+
import {EJSUtils} from '../utils/EJSUtils'
|
|
9
|
+
import ora from 'ora'
|
|
10
|
+
import {vi} from 'vitest'
|
|
11
|
+
import {PrettierUtils} from '../utils/PrettierUtils'
|
|
12
|
+
|
|
13
|
+
const spinner = ora('Loading')
|
|
14
|
+
|
|
15
|
+
export async function init() {
|
|
16
|
+
await addDependencies()
|
|
17
|
+
await addWidgetTs()
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
async function addWidgetTs() {
|
|
21
|
+
let name = await promptChecker(
|
|
22
|
+
{
|
|
23
|
+
type: 'input',
|
|
24
|
+
name: 'name',
|
|
25
|
+
message: chalk.blue('组件包名 (示例 cn.widget.countdown):'),
|
|
26
|
+
},
|
|
27
|
+
answer => {
|
|
28
|
+
const name = answer.name
|
|
29
|
+
if (name == null || name === '') {
|
|
30
|
+
consola.log(chalk.red(`组件包名不能为空`))
|
|
31
|
+
return false
|
|
32
|
+
}
|
|
33
|
+
return true
|
|
34
|
+
},
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
let widgetTs = path.join(process.cwd(), 'widget.package.ts')
|
|
38
|
+
if (!fs.existsSync(widgetTs)) {
|
|
39
|
+
spinner.info('creating widget.package.ts')
|
|
40
|
+
await EJSUtils.renderToFile('WidgetPackage.ejs', widgetTs, 'typescript', {name})
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
await addVitePlugin()
|
|
44
|
+
|
|
45
|
+
spinner.succeed('Done! Be sure to replace the contents of widget.package.ts with your own.')
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* 增加widget-js依赖
|
|
50
|
+
*/
|
|
51
|
+
async function addDependencies() {
|
|
52
|
+
spinner.info('Adding dependencies')
|
|
53
|
+
const packageJson = Utils.getPackageJson()
|
|
54
|
+
let dependencies = packageJson['dependencies']
|
|
55
|
+
let devDependencies = packageJson['devDependencies']
|
|
56
|
+
if (!dependencies) {
|
|
57
|
+
dependencies = {}
|
|
58
|
+
}
|
|
59
|
+
if (!devDependencies) {
|
|
60
|
+
packageJson['devDependencies'] = {}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
await addDependency('@widget-js/core', dependencies)
|
|
64
|
+
await addDependency('@widget-js/vue3', dependencies)
|
|
65
|
+
await addDependency('@widget-js/vite-plugin-widget', devDependencies)
|
|
66
|
+
|
|
67
|
+
packageJson['dependencies'] = dependencies
|
|
68
|
+
packageJson['devDependencies'] = devDependencies
|
|
69
|
+
|
|
70
|
+
fs.writeFileSync(Utils.getPackagePath(), JSON.stringify(packageJson, null, 2))
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
async function addVitePlugin() {
|
|
74
|
+
spinner.info('Adding vite plugin')
|
|
75
|
+
const viteConfigPath = path.join(process.cwd(), 'vite.config.ts')
|
|
76
|
+
if (!fs.existsSync(viteConfigPath)) {
|
|
77
|
+
spinner.warn('vite.config.ts not exists')
|
|
78
|
+
return
|
|
79
|
+
}
|
|
80
|
+
let viteConfig = fs.readFileSync(viteConfigPath).toString()
|
|
81
|
+
viteConfig = viteConfig.replace('import', `import widget from '@widget-js/vite-plugin-widget'\nimport`)
|
|
82
|
+
viteConfig = viteConfig.replace('vue()', `vue(),widget()`)
|
|
83
|
+
fs.writeFileSync(viteConfigPath,await PrettierUtils.format(viteConfig, 'typescript'))
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
async function addDependency(packageName: string, dependencies: any) {
|
|
87
|
+
spinner.info(`Adding dependencies ${packageName}`)
|
|
88
|
+
if (dependencies[packageName]) {
|
|
89
|
+
return
|
|
90
|
+
}
|
|
91
|
+
const remoteVersion = await Utils.getRemoteVersion(packageName)
|
|
92
|
+
dependencies[packageName] = `^${remoteVersion}`
|
|
93
|
+
}
|
package/src/utils/EJSUtils.ts
CHANGED
|
@@ -1,25 +1,17 @@
|
|
|
1
|
-
import path from
|
|
2
|
-
import fs from
|
|
3
|
-
import ejs, {Data} from
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const formattedEJSCode = prettier.format(code, {
|
|
19
|
-
parser: parser,
|
|
20
|
-
tabWidth: 2,
|
|
21
|
-
singleQuote: true,
|
|
22
|
-
})
|
|
23
|
-
fs.writeFileSync(outputFile, formattedEJSCode)
|
|
24
|
-
}
|
|
25
|
-
}
|
|
1
|
+
import path from 'path'
|
|
2
|
+
import fs from 'fs'
|
|
3
|
+
import ejs, {Data} from 'ejs'
|
|
4
|
+
import {BuiltInParserName} from 'prettier'
|
|
5
|
+
import {dirname} from 'dirname-filename-esm'
|
|
6
|
+
import {PrettierUtils} from './PrettierUtils'
|
|
7
|
+
|
|
8
|
+
export class EJSUtils {
|
|
9
|
+
static async renderToFile(templateFile: string, outputFile: string, parser: BuiltInParserName, renderOptions: Data) {
|
|
10
|
+
const defineTemplatePath = path.join(dirname(import.meta), '../template', templateFile)
|
|
11
|
+
let defineTemplate = fs.readFileSync(defineTemplatePath, 'utf8')
|
|
12
|
+
// Format the EJS code using Prettier
|
|
13
|
+
let code = ejs.render(defineTemplate, renderOptions)
|
|
14
|
+
const formattedEJSCode =await PrettierUtils.format(code,parser)
|
|
15
|
+
fs.writeFileSync(outputFile, formattedEJSCode)
|
|
16
|
+
}
|
|
17
|
+
}
|
package/vite.config.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { fileURLToPath, URL } from 'node:url';
|
|
2
|
+
|
|
3
|
+
import { defineConfig } from 'vite';
|
|
4
|
+
import vue from '@vitejs/plugin-vue';
|
|
5
|
+
|
|
6
|
+
// https://vitejs.dev/config/
|
|
7
|
+
export default defineConfig({
|
|
8
|
+
plugins: [vue()],
|
|
9
|
+
resolve: {
|
|
10
|
+
alias: {
|
|
11
|
+
'@': fileURLToPath(new URL('./src', import.meta.url)),
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
});
|
package/widget.package.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
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
|
-
});
|