@maxelms/create-plugin-cli 1.1.7 → 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/bin/index.js +1 -0
- package/lib/index.js +5 -1
- package/package.json +1 -1
- package/templates/vue3-micro-app/.gitignore.tpl +23 -0
- package/templates/vue3-micro-app/README.md +15 -31
- package/templates/vue3-micro-app/babel.config.js +3 -0
- package/templates/vue3-micro-app/package.json.tpl +41 -36
- package/templates/vue3-micro-app/public/index.html +20 -0
- package/templates/vue3-micro-app/src/App.vue +52 -70
- package/templates/vue3-micro-app/src/assets/logo.png +0 -0
- package/templates/vue3-micro-app/src/components/HelloWorld.vue +63 -31
- package/templates/vue3-micro-app/src/main.js +64 -0
- package/templates/vue3-micro-app/src/public-path.js +4 -0
- package/templates/vue3-micro-app/src/router/index.js +6 -0
- package/templates/vue3-micro-app/src/store/count.js +34 -0
- package/templates/vue3-micro-app/src/store/index.js +12 -0
- package/templates/vue3-micro-app/src/views/About.vue +19 -0
- package/templates/vue3-micro-app/src/views/Home.vue +37 -0
- package/templates/vue3-micro-app/vue.config.js.tpl +43 -0
- package/templates/vue3-micro-plugin/README.md +24 -0
- package/templates/vue3-micro-plugin/babel.config.js +8 -0
- package/templates/vue3-micro-plugin/manifest.json.tpl +3 -0
- package/templates/vue3-micro-plugin/package.json.tpl +57 -0
- package/templates/vue3-micro-plugin/public/configuration.json +30 -0
- package/templates/vue3-micro-plugin/public/index.html +10 -0
- package/templates/vue3-micro-plugin/scripts/compress.js +32 -0
- package/templates/vue3-micro-plugin/src/App.vue.tpl +42 -0
- package/templates/vue3-micro-plugin/src/main.js +41 -0
- package/templates/vue3-micro-plugin/src/style.less.tpl +16 -0
- package/templates/vue3-micro-plugin/vue.config.js +46 -0
- package/templates/vue3vite-micro-app/.gitignore.tpl +23 -0
- package/templates/vue3vite-micro-app/README.md +48 -0
- package/templates/{vue3-micro-app → vue3vite-micro-app}/eslint.config.js +5 -1
- package/templates/vue3vite-micro-app/package.json.tpl +53 -0
- package/templates/vue3vite-micro-app/public/configuration.json +30 -0
- package/templates/vue3vite-micro-app/public/favicon.ico +0 -0
- package/templates/vue3vite-micro-app/scripts/devDistServe.cjs +16 -0
- package/templates/vue3vite-micro-app/src/App.vue +91 -0
- package/templates/vue3vite-micro-app/src/components/HelloWorld.vue +42 -0
- package/templates/vue3vite-micro-app/src/main.ts +40 -0
- package/templates/vue3vite-micro-app/src/typings.d.ts +5 -0
- package/templates/{vue3-micro-app → vue3vite-micro-app}/tsconfig.app.json +1 -0
- package/templates/vue3-micro-app/pnpm-lock.yaml +0 -4477
- package/templates/vue3-micro-app/src/main.ts +0 -14
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/.editorconfig +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/.prettierrc.json +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/.vscode/extensions.json +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/env.d.ts +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/index.html +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/src/assets/base.css +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/src/assets/logo.svg +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/src/assets/main.css +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/src/components/TheWelcome.vue +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/src/components/WelcomeItem.vue +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/src/components/__tests__/HelloWorld.spec.ts +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/src/components/icons/IconCommunity.vue +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/src/components/icons/IconDocumentation.vue +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/src/components/icons/IconEcosystem.vue +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/src/components/icons/IconSupport.vue +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/src/components/icons/IconTooling.vue +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/src/router/index.ts +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/src/stores/counter.ts +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/src/views/AboutView.vue +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/src/views/HomeView.vue +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/tsconfig.json +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/tsconfig.node.json +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/tsconfig.vitest.json +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/vite.config.ts +0 -0
- /package/templates/{vue3-micro-app → vue3vite-micro-app}/vitest.config.ts +0 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const path = require('path');
|
|
2
|
+
const { name } = require('./package');
|
|
3
|
+
|
|
4
|
+
function resolve(dir) {
|
|
5
|
+
return path.join(__dirname, dir);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const port = 7105;
|
|
9
|
+
|
|
10
|
+
module.exports = {
|
|
11
|
+
outputDir: 'dist',
|
|
12
|
+
assetsDir: 'static',
|
|
13
|
+
filenameHashing: true,
|
|
14
|
+
devServer: {
|
|
15
|
+
hot: true,
|
|
16
|
+
disableHostCheck: true,
|
|
17
|
+
port,
|
|
18
|
+
overlay: {
|
|
19
|
+
warnings: false,
|
|
20
|
+
errors: true,
|
|
21
|
+
},
|
|
22
|
+
headers: {
|
|
23
|
+
'Access-Control-Allow-Origin': '*',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
// 自定义webpack配置
|
|
27
|
+
configureWebpack: {
|
|
28
|
+
resolve: {
|
|
29
|
+
alias: {
|
|
30
|
+
'@': resolve('src'),
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
output: {
|
|
34
|
+
// 把子应用打包成 umd 库格式
|
|
35
|
+
// library: `${name}-[name]`,
|
|
36
|
+
// libraryTarget: 'umd',
|
|
37
|
+
// jsonpFunction: `webpackJsonp_${name}`,
|
|
38
|
+
|
|
39
|
+
library: "<%= pluginName %>-<%= uniqueIdentifier %>",
|
|
40
|
+
libraryTarget: 'umd',
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# vue-p2
|
|
2
|
+
|
|
3
|
+
## Project setup
|
|
4
|
+
```
|
|
5
|
+
pnpm install
|
|
6
|
+
```
|
|
7
|
+
|
|
8
|
+
### Compiles and hot-reloads for development
|
|
9
|
+
```
|
|
10
|
+
pnpm run serve
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### Compiles and minifies for production
|
|
14
|
+
```
|
|
15
|
+
pnpm run build
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Lints and fixes files
|
|
19
|
+
```
|
|
20
|
+
pnpm run lint
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Customize configuration
|
|
24
|
+
See [Configuration Reference](https://cli.vuejs.org/config/).
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "<%= pluginName %>",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"scripts": {
|
|
6
|
+
"serve": "vue-cli-service serve",
|
|
7
|
+
"start": "vue-cli-service serve",
|
|
8
|
+
"build": "vue-cli-service build && maxelms-plugin-cli -c",
|
|
9
|
+
"lint": "vue-cli-service lint"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"@maxelms/create-pulgin-api": "1.0.0",
|
|
13
|
+
"core-js": "3.6.5",
|
|
14
|
+
"element-ui": "2.15.6",
|
|
15
|
+
"vue": "3.0.0",
|
|
16
|
+
"vue-router": "4.0.0-beta.11",
|
|
17
|
+
"vuex": "4.0.0-beta.4"
|
|
18
|
+
},
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"@babel/plugin-proposal-optional-chaining": "7.21.0",
|
|
21
|
+
"@maxelms/create-plugin-cli": "<%= cliVersion %>",
|
|
22
|
+
"@vue/cli-plugin-babel": "4.5.0",
|
|
23
|
+
"@vue/cli-plugin-eslint": "4.5.0",
|
|
24
|
+
"@vue/cli-service": "4.5.0",
|
|
25
|
+
"archiver": "5.3.1",
|
|
26
|
+
"@vue/compiler-sfc": "3.0.0",
|
|
27
|
+
"babel-eslint": "10.1.0",
|
|
28
|
+
"copy-webpack-plugin": "5.1.1",
|
|
29
|
+
"eslint": "6.7.2",
|
|
30
|
+
"eslint-plugin-vue": "6.2.2",
|
|
31
|
+
"less": "^4.1.3",
|
|
32
|
+
"less-loader": "5.0.0",
|
|
33
|
+
"sass": "1.47.0",
|
|
34
|
+
"sass-loader": "8.0.2",
|
|
35
|
+
"url-loader": "2.2.0",
|
|
36
|
+
"vue-template-compiler": "2.6.11"
|
|
37
|
+
},
|
|
38
|
+
"eslintConfig": {
|
|
39
|
+
"root": true,
|
|
40
|
+
"env": {
|
|
41
|
+
"node": true
|
|
42
|
+
},
|
|
43
|
+
"extends": [
|
|
44
|
+
"plugin:vue/essential",
|
|
45
|
+
"eslint:recommended"
|
|
46
|
+
],
|
|
47
|
+
"parserOptions": {
|
|
48
|
+
"parser": "babel-eslint"
|
|
49
|
+
},
|
|
50
|
+
"rules": {}
|
|
51
|
+
},
|
|
52
|
+
"browserslist": [
|
|
53
|
+
"> 1%",
|
|
54
|
+
"last 2 versions",
|
|
55
|
+
"not dead"
|
|
56
|
+
]
|
|
57
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"propName1": {
|
|
3
|
+
"label": "配置项一",
|
|
4
|
+
"type": "string",
|
|
5
|
+
"defaultValue": "配置项内容"
|
|
6
|
+
},
|
|
7
|
+
"propName2": {
|
|
8
|
+
"label": "配置项二",
|
|
9
|
+
"type": "number",
|
|
10
|
+
"defaultValue": 350
|
|
11
|
+
},
|
|
12
|
+
"propName3": {
|
|
13
|
+
"label": "配置项三",
|
|
14
|
+
"type": "select",
|
|
15
|
+
"options": [
|
|
16
|
+
{
|
|
17
|
+
"label": "选项1",
|
|
18
|
+
"value": "option1"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"label": "选项2",
|
|
22
|
+
"value": "option2"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"label": "选项3",
|
|
26
|
+
"value": "option3"
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const archiver = require('archiver');
|
|
3
|
+
|
|
4
|
+
const distDir = 'dist'
|
|
5
|
+
if (fs.existsSync(distDir)) {
|
|
6
|
+
if (fs.existsSync('dist.maxplugin')) {
|
|
7
|
+
fs.unlinkSync('dist.maxplugin')
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const output = fs.createWriteStream('dist.maxplugin');
|
|
11
|
+
const archive = archiver('zip', {
|
|
12
|
+
zlib: { level: 9 }
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
output.on('close', function() {
|
|
16
|
+
console.log('Compress completed!');
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
archive.on('error', function(err) {
|
|
20
|
+
console.log('Compress failed!');
|
|
21
|
+
throw err;
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
archive.pipe(output);
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
archive.directory('dist/', 'dist');
|
|
28
|
+
|
|
29
|
+
archive.finalize();
|
|
30
|
+
} else {
|
|
31
|
+
console.log('No dist directory found!');
|
|
32
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<div class="maxelms-customize-component-<%= timestamp %>">
|
|
4
|
+
<input
|
|
5
|
+
:style="{width: `${width}px`}"
|
|
6
|
+
:disabled="disabled"
|
|
7
|
+
:placeholder="placeholder"
|
|
8
|
+
value="欢迎使用 Maxelms 页面组件"
|
|
9
|
+
/>
|
|
10
|
+
</div>
|
|
11
|
+
</div>
|
|
12
|
+
</template>
|
|
13
|
+
|
|
14
|
+
<script>
|
|
15
|
+
|
|
16
|
+
export default {
|
|
17
|
+
name: 'App',
|
|
18
|
+
components: {
|
|
19
|
+
},
|
|
20
|
+
methods: {
|
|
21
|
+
|
|
22
|
+
},
|
|
23
|
+
computed: {
|
|
24
|
+
/** 是否禁用 */
|
|
25
|
+
disabled () {
|
|
26
|
+
return this.$root?.masterProps?.configurations?.propName3
|
|
27
|
+
},
|
|
28
|
+
/** 控件宽度 */
|
|
29
|
+
width () {
|
|
30
|
+
return this.$root?.masterProps?.configurations?.propName2 || 350
|
|
31
|
+
},
|
|
32
|
+
/** 提示文本 */
|
|
33
|
+
placeholder () {
|
|
34
|
+
return this.$root?.masterProps?.configurations?.propName1
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
}
|
|
38
|
+
</script>
|
|
39
|
+
|
|
40
|
+
<style lang="less">
|
|
41
|
+
@import "./style.less";
|
|
42
|
+
</style>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { createApp } from 'vue';
|
|
2
|
+
import { registerPlugin, poweredByMaxelms } from '@maxelms/create-pulgin-api'
|
|
3
|
+
import App from './App.vue'
|
|
4
|
+
|
|
5
|
+
// Vue.config.productionTip = false
|
|
6
|
+
|
|
7
|
+
window.__SINGLETON_MODE__ = true
|
|
8
|
+
|
|
9
|
+
// configureCompat({
|
|
10
|
+
// MODE: true, // 开启 Vue 2 兼容模式
|
|
11
|
+
// });
|
|
12
|
+
|
|
13
|
+
const vms = {}
|
|
14
|
+
|
|
15
|
+
const render = (props) => {
|
|
16
|
+
const { containerId } = props || {}
|
|
17
|
+
createApp(App, {
|
|
18
|
+
data: {
|
|
19
|
+
masterProps: props || {}
|
|
20
|
+
},
|
|
21
|
+
}).mount(containerId ? `#${containerId} #root` : '#root');
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (poweredByMaxelms) {
|
|
25
|
+
registerPlugin({
|
|
26
|
+
mount(props) {
|
|
27
|
+
render(props)
|
|
28
|
+
},
|
|
29
|
+
update(props) {
|
|
30
|
+
if (vms[props.containerId]) {
|
|
31
|
+
vms[props.containerId].masterProps = props
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
unmount(props) {
|
|
35
|
+
vms[props.containerId]?.$destroy?.()
|
|
36
|
+
vms[props.containerId] = null
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
} else {
|
|
40
|
+
render()
|
|
41
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
@prefixCls: maxelms-customize-component-<%= timestamp %>;
|
|
3
|
+
|
|
4
|
+
.@{prefixCls} {
|
|
5
|
+
display: flex;
|
|
6
|
+
align-items: center;
|
|
7
|
+
justify-content: center;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
input {
|
|
10
|
+
width: 300px;
|
|
11
|
+
text-align: center;
|
|
12
|
+
}
|
|
13
|
+
img {
|
|
14
|
+
width: 350px;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
const path = require('path');
|
|
2
|
+
const CopyWebpackPlugin = require('copy-webpack-plugin');
|
|
3
|
+
|
|
4
|
+
module.exports = {
|
|
5
|
+
pages: {
|
|
6
|
+
index: {
|
|
7
|
+
entry: "src/main.js",
|
|
8
|
+
template: "public/index.html",
|
|
9
|
+
filename: "index.html",
|
|
10
|
+
title: "Maxelms Plugin",
|
|
11
|
+
},
|
|
12
|
+
|
|
13
|
+
},
|
|
14
|
+
publicPath: './',
|
|
15
|
+
css: {
|
|
16
|
+
extract: true,
|
|
17
|
+
},
|
|
18
|
+
productionSourceMap: false,
|
|
19
|
+
devServer: {
|
|
20
|
+
headers: {
|
|
21
|
+
"Access-Control-Allow-Origin": "*",
|
|
22
|
+
},
|
|
23
|
+
port: 8080,
|
|
24
|
+
open: ['/', '/playground.html'],
|
|
25
|
+
contentBase: path.join(__dirname, 'examples/'),
|
|
26
|
+
},
|
|
27
|
+
chainWebpack: (config) => {
|
|
28
|
+
config.module
|
|
29
|
+
.rule('fonts')
|
|
30
|
+
.test(/.(ttf|otf|eot|woff|woff2)$/)
|
|
31
|
+
.use('url-loader')
|
|
32
|
+
.loader('url-loader')
|
|
33
|
+
.tap(() => ({
|
|
34
|
+
name: '/fonts/[name].[hash:8].[ext]'
|
|
35
|
+
}))
|
|
36
|
+
.end()
|
|
37
|
+
},
|
|
38
|
+
configureWebpack: {
|
|
39
|
+
plugins: [
|
|
40
|
+
new CopyWebpackPlugin([
|
|
41
|
+
{ from: 'README.md' },
|
|
42
|
+
{ from: 'manifest.json' },
|
|
43
|
+
]),
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
|
2
|
+
|
|
3
|
+
# dependencies
|
|
4
|
+
/node_modules
|
|
5
|
+
/npm-debug.log*
|
|
6
|
+
/yarn-error.log
|
|
7
|
+
/yarn.lock
|
|
8
|
+
/package-lock.json
|
|
9
|
+
|
|
10
|
+
# production
|
|
11
|
+
/dist
|
|
12
|
+
|
|
13
|
+
# misc
|
|
14
|
+
.DS_Store
|
|
15
|
+
|
|
16
|
+
# umi
|
|
17
|
+
/src/.umi
|
|
18
|
+
/src/.umi-production
|
|
19
|
+
/src/.umi-test
|
|
20
|
+
/.env.local
|
|
21
|
+
/dist.maxplugin
|
|
22
|
+
/dist.zip
|
|
23
|
+
/.vscode
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
### 本地使用代理到主应用环境
|
|
2
|
+
npm run proxy(可以控制 DIST_PROT 修改静态资源端口号)
|
|
3
|
+
|
|
4
|
+
# vue-project
|
|
5
|
+
|
|
6
|
+
This template should help get you started developing with Vue 3 in Vite.
|
|
7
|
+
|
|
8
|
+
## Recommended IDE Setup
|
|
9
|
+
|
|
10
|
+
[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur).
|
|
11
|
+
|
|
12
|
+
## Type Support for `.vue` Imports in TS
|
|
13
|
+
|
|
14
|
+
TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) to make the TypeScript language service aware of `.vue` types.
|
|
15
|
+
|
|
16
|
+
## Customize configuration
|
|
17
|
+
|
|
18
|
+
See [Vite Configuration Reference](https://vite.dev/config/).
|
|
19
|
+
|
|
20
|
+
## Project Setup
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
pnpm install
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Compile and Hot-Reload for Development
|
|
27
|
+
|
|
28
|
+
```sh
|
|
29
|
+
pnpm dev
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Type-Check, Compile and Minify for Production
|
|
33
|
+
|
|
34
|
+
```sh
|
|
35
|
+
pnpm build
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Run Unit Tests with [Vitest](https://vitest.dev/)
|
|
39
|
+
|
|
40
|
+
```sh
|
|
41
|
+
pnpm test:unit
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Lint with [ESLint](https://eslint.org/)
|
|
45
|
+
|
|
46
|
+
```sh
|
|
47
|
+
pnpm lint
|
|
48
|
+
```
|
|
@@ -16,10 +16,14 @@ export default [
|
|
|
16
16
|
|
|
17
17
|
...pluginVue.configs['flat/essential'],
|
|
18
18
|
...vueTsEslintConfig(),
|
|
19
|
-
|
|
20
19
|
{
|
|
21
20
|
...pluginVitest.configs.recommended,
|
|
22
21
|
files: ['src/**/__tests__/*'],
|
|
23
22
|
},
|
|
24
23
|
skipFormatting,
|
|
24
|
+
{
|
|
25
|
+
rules: {
|
|
26
|
+
'@typescript-eslint/no-explicit-any': 'off',
|
|
27
|
+
}
|
|
28
|
+
},
|
|
25
29
|
]
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "<%= pluginName %>",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"start": "vite",
|
|
8
|
+
"proxy": "npm run build && cross-env DIST_PROT=9966 node scripts/devDistServe.cjs",
|
|
9
|
+
"build": "run-p type-check \"build-only {@}\" -- && maxelms-plugin-cli -c",
|
|
10
|
+
"preview": "vite preview",
|
|
11
|
+
"test:unit": "vitest",
|
|
12
|
+
"build-only": "vite build",
|
|
13
|
+
"type-check": "vue-tsc --build",
|
|
14
|
+
"lint": "eslint . --fix",
|
|
15
|
+
"format": "prettier --write src/"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@esbuild/darwin-arm64": "0.24.0",
|
|
19
|
+
"@rollup/rollup-darwin-arm64": "4.28.1",
|
|
20
|
+
"pinia": "2.2.6",
|
|
21
|
+
"vue": "3.5.13",
|
|
22
|
+
"vue-router": "4.4.5"
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@maxelms/create-plugin-cli": "<%= cliVersion %>",
|
|
26
|
+
"@tsconfig/node22": "22.0.0",
|
|
27
|
+
"@types/jsdom": "21.1.7",
|
|
28
|
+
"@types/node": "22.9.3",
|
|
29
|
+
"@vitejs/plugin-vue": "5.2.1",
|
|
30
|
+
"@vitejs/plugin-vue-jsx": "4.1.1",
|
|
31
|
+
"@vitest/eslint-plugin": "1.1.10",
|
|
32
|
+
"@vue/eslint-config-prettier": "10.1.0",
|
|
33
|
+
"@vue/eslint-config-typescript": "14.1.3",
|
|
34
|
+
"@vue/test-utils": "2.4.6",
|
|
35
|
+
"@vue/tsconfig": "0.7.0",
|
|
36
|
+
"cors": "2.8.5",
|
|
37
|
+
"cross-env": "7.0.3",
|
|
38
|
+
"eslint": "9.14.0",
|
|
39
|
+
"eslint-plugin-vue": "9.30.0",
|
|
40
|
+
"express": "4.21.2",
|
|
41
|
+
"jsdom": "25.0.1",
|
|
42
|
+
"npm-run-all2": "7.0.1",
|
|
43
|
+
"prettier": "3.3.3",
|
|
44
|
+
"typescript": "5.6.3",
|
|
45
|
+
"vite": "6.0.1",
|
|
46
|
+
"vite-plugin-vue-devtools": "7.6.5",
|
|
47
|
+
"vitest": "2.1.5",
|
|
48
|
+
"vue-tsc": "2.1.10"
|
|
49
|
+
},
|
|
50
|
+
"resolutions": {
|
|
51
|
+
"magic-string": "0.30.15"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"propName1": {
|
|
3
|
+
"label": "配置项一",
|
|
4
|
+
"type": "string",
|
|
5
|
+
"defaultValue": "配置项内容"
|
|
6
|
+
},
|
|
7
|
+
"propName2": {
|
|
8
|
+
"label": "配置项二",
|
|
9
|
+
"type": "number",
|
|
10
|
+
"defaultValue": 350
|
|
11
|
+
},
|
|
12
|
+
"propName3": {
|
|
13
|
+
"label": "配置项三",
|
|
14
|
+
"type": "select",
|
|
15
|
+
"options": [
|
|
16
|
+
{
|
|
17
|
+
"label": "选项1",
|
|
18
|
+
"value": "option1"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"label": "选项2",
|
|
22
|
+
"value": "option2"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"label": "选项3",
|
|
26
|
+
"value": "option3"
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const express = require('express');
|
|
2
|
+
const cors = require('cors');
|
|
3
|
+
const path = require('path');
|
|
4
|
+
const { DIST_PROT = '3000' } = process.env
|
|
5
|
+
|
|
6
|
+
const app = express();
|
|
7
|
+
|
|
8
|
+
// 启用 CORS 中间件
|
|
9
|
+
app.use(cors());
|
|
10
|
+
|
|
11
|
+
// 设置静态文件目录
|
|
12
|
+
app.use(express.static(path.join(__dirname, '../dist')));
|
|
13
|
+
|
|
14
|
+
app.listen(DIST_PROT, () => {
|
|
15
|
+
console.log(`Server running at http://localhost:${DIST_PROT}/`);
|
|
16
|
+
});
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
defineProps<{
|
|
3
|
+
configurations: any
|
|
4
|
+
}>()
|
|
5
|
+
import { RouterLink, RouterView } from 'vue-router'
|
|
6
|
+
import HelloWorld from './components/HelloWorld.vue'
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<template>
|
|
10
|
+
<header>
|
|
11
|
+
<img alt="Vue logo" class="logo" src="@/assets/logo.svg" width="125" height="125" />
|
|
12
|
+
|
|
13
|
+
<div class="wrapper">
|
|
14
|
+
<HelloWorld msg="You did it!" />
|
|
15
|
+
{{ configurations.propName1 }}
|
|
16
|
+
<nav>
|
|
17
|
+
<a>Home</a>
|
|
18
|
+
<br />
|
|
19
|
+
<a>about</a>
|
|
20
|
+
<!-- <RouterLink to="/">Home</RouterLink> -->
|
|
21
|
+
<!-- <RouterLink to="/about">About</RouterLink> -->
|
|
22
|
+
</nav>
|
|
23
|
+
</div>
|
|
24
|
+
</header>
|
|
25
|
+
|
|
26
|
+
<RouterView />
|
|
27
|
+
</template>
|
|
28
|
+
|
|
29
|
+
<style scoped>
|
|
30
|
+
header {
|
|
31
|
+
line-height: 1.5;
|
|
32
|
+
max-height: 100vh;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.logo {
|
|
36
|
+
display: block;
|
|
37
|
+
margin: 0 auto 2rem;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
nav {
|
|
41
|
+
width: 100%;
|
|
42
|
+
font-size: 12px;
|
|
43
|
+
text-align: center;
|
|
44
|
+
margin-top: 2rem;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
nav a.router-link-exact-active {
|
|
48
|
+
color: var(--color-text);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
nav a.router-link-exact-active:hover {
|
|
52
|
+
background-color: transparent;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
nav a {
|
|
56
|
+
display: inline-block;
|
|
57
|
+
padding: 0 1rem;
|
|
58
|
+
border-left: 1px solid var(--color-border);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
nav a:first-of-type {
|
|
62
|
+
border: 0;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@media (min-width: 1024px) {
|
|
66
|
+
header {
|
|
67
|
+
display: flex;
|
|
68
|
+
place-items: center;
|
|
69
|
+
padding-right: calc(var(--section-gap) / 2);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.logo {
|
|
73
|
+
margin: 0 2rem 0 0;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
header .wrapper {
|
|
77
|
+
display: flex;
|
|
78
|
+
place-items: flex-start;
|
|
79
|
+
flex-wrap: wrap;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
nav {
|
|
83
|
+
text-align: left;
|
|
84
|
+
margin-left: -1rem;
|
|
85
|
+
font-size: 1rem;
|
|
86
|
+
|
|
87
|
+
padding: 1rem 0;
|
|
88
|
+
margin-top: 1rem;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
</style>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
defineProps<{
|
|
3
|
+
msg: string
|
|
4
|
+
}>()
|
|
5
|
+
console.log('1234214321', '12341232323412')
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<template>
|
|
9
|
+
<div class="greetings">
|
|
10
|
+
<h1 class="green">{{ msg }}</h1>
|
|
11
|
+
<h3>
|
|
12
|
+
You’ve successfully created a project with
|
|
13
|
+
<a href="https://vite.dev/" target="_blank" rel="noopener">Vite</a> +
|
|
14
|
+
<a href="https://vuejs.org/" target="_blank" rel="noopener">Vue 3</a>. What's next?
|
|
15
|
+
</h3>
|
|
16
|
+
</div>
|
|
17
|
+
</template>
|
|
18
|
+
|
|
19
|
+
<style scoped>
|
|
20
|
+
h1 {
|
|
21
|
+
font-weight: 500;
|
|
22
|
+
font-size: 2.6rem;
|
|
23
|
+
position: relative;
|
|
24
|
+
top: -10px;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
h3 {
|
|
28
|
+
font-size: 1.2rem;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.greetings h1,
|
|
32
|
+
.greetings h3 {
|
|
33
|
+
text-align: center;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@media (min-width: 1024px) {
|
|
37
|
+
.greetings h1,
|
|
38
|
+
.greetings h3 {
|
|
39
|
+
text-align: left;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
</style>
|