chore: code cleanup

Signed-off-by: Ryan Wang <i@ryanc.cc>
This commit is contained in:
Ryan Wang
2022-07-15 16:57:13 +08:00
parent 5f7b05e58a
commit a058a08907
15 changed files with 178 additions and 144 deletions

View File

@@ -44,10 +44,10 @@ jobs:
- name: Build with Gradle - name: Build with Gradle
run: | run: |
./gradlew clean build -x test ./gradlew clean build -x test
- name: Archive halo-plugin-template jar - name: Archive plugin-template jar
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2
with: with:
name: halo-plugin-template name: plugin-template
path: | path: |
build/libs/*-plain.jar build/libs/*-plain.jar
retention-days: 1 retention-days: 1

View File

@@ -1,6 +1,7 @@
{ {
"name": "halo-plugin-frontend-template", "name": "@halo-dev/plugin-frontend-template",
"version": "0.0.0", "version": "0.0.0",
"private": true,
"scripts": { "scripts": {
"dev": "vite build --watch", "dev": "vite build --watch",
"build": "vite build", "build": "vite build",
@@ -12,26 +13,26 @@
"dependencies": { "dependencies": {
"@halo-dev/admin-shared": "^0.0.0-alpha.1", "@halo-dev/admin-shared": "^0.0.0-alpha.1",
"@halo-dev/components": "^0.0.0-alpha.0", "@halo-dev/components": "^0.0.0-alpha.0",
"vue": "^3.2.36" "vue": "^3.2.37"
}, },
"devDependencies": { "devDependencies": {
"@rushstack/eslint-patch": "^1.1.0", "@rushstack/eslint-patch": "^1.1.4",
"@types/jsdom": "^16.2.14", "@types/jsdom": "^16.2.14",
"@types/node": "^16.11.36", "@types/node": "^16.11.44",
"@vitejs/plugin-vue": "^2.3.3", "@vitejs/plugin-vue": "^2.3.3",
"@vitejs/plugin-vue-jsx": "^1.3.10", "@vitejs/plugin-vue-jsx": "^1.3.10",
"@vue/eslint-config-prettier": "^7.0.0", "@vue/eslint-config-prettier": "^7.0.0",
"@vue/eslint-config-typescript": "^10.0.0", "@vue/eslint-config-typescript": "^10.0.0",
"@vue/test-utils": "^2.0.0", "@vue/test-utils": "^2.0.2",
"@vue/tsconfig": "^0.1.3", "@vue/tsconfig": "^0.1.3",
"eslint": "^8.5.0", "eslint": "^8.19.0",
"eslint-plugin-vue": "^8.2.0", "eslint-plugin-vue": "^8.7.1",
"jsdom": "^19.0.0", "jsdom": "^19.0.0",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"prettier": "^2.5.1", "prettier": "^2.7.1",
"typescript": "~4.7.2", "typescript": "~4.7.4",
"vite": "^2.9.9", "vite": "^2.9.14",
"vitest": "^0.13.0", "vitest": "^0.13.1",
"vue-tsc": "^0.35.2" "vue-tsc": "^0.35.2"
} }
} }

View File

@@ -3,24 +3,24 @@ lockfileVersion: 5.4
specifiers: specifiers:
'@halo-dev/admin-shared': ^0.0.0-alpha.1 '@halo-dev/admin-shared': ^0.0.0-alpha.1
'@halo-dev/components': ^0.0.0-alpha.0 '@halo-dev/components': ^0.0.0-alpha.0
'@rushstack/eslint-patch': ^1.1.0 '@rushstack/eslint-patch': ^1.1.4
'@types/jsdom': ^16.2.14 '@types/jsdom': ^16.2.14
'@types/node': ^16.11.36 '@types/node': ^16.11.44
'@vitejs/plugin-vue': ^2.3.3 '@vitejs/plugin-vue': ^2.3.3
'@vitejs/plugin-vue-jsx': ^1.3.10 '@vitejs/plugin-vue-jsx': ^1.3.10
'@vue/eslint-config-prettier': ^7.0.0 '@vue/eslint-config-prettier': ^7.0.0
'@vue/eslint-config-typescript': ^10.0.0 '@vue/eslint-config-typescript': ^10.0.0
'@vue/test-utils': ^2.0.0 '@vue/test-utils': ^2.0.2
'@vue/tsconfig': ^0.1.3 '@vue/tsconfig': ^0.1.3
eslint: ^8.5.0 eslint: ^8.19.0
eslint-plugin-vue: ^8.2.0 eslint-plugin-vue: ^8.7.1
jsdom: ^19.0.0 jsdom: ^19.0.0
npm-run-all: ^4.1.5 npm-run-all: ^4.1.5
prettier: ^2.5.1 prettier: ^2.7.1
typescript: ~4.7.2 typescript: ~4.7.4
vite: ^2.9.9 vite: ^2.9.14
vitest: ^0.13.0 vitest: ^0.13.1
vue: ^3.2.36 vue: ^3.2.37
vue-tsc: ^0.35.2 vue-tsc: ^0.35.2
dependencies: dependencies:
@@ -29,24 +29,24 @@ dependencies:
vue: 3.2.37 vue: 3.2.37
devDependencies: devDependencies:
'@rushstack/eslint-patch': 1.1.3 '@rushstack/eslint-patch': 1.1.4
'@types/jsdom': 16.2.14 '@types/jsdom': 16.2.14
'@types/node': 16.11.38 '@types/node': 16.11.44
'@vitejs/plugin-vue': 2.3.3_vite@2.9.10+vue@3.2.37 '@vitejs/plugin-vue': 2.3.3_vite@2.9.14+vue@3.2.37
'@vitejs/plugin-vue-jsx': 1.3.10 '@vitejs/plugin-vue-jsx': 1.3.10
'@vue/eslint-config-prettier': 7.0.0_ddjd75dz7x3czaucyvuaamiqdi '@vue/eslint-config-prettier': 7.0.0_exbhzpnbupd3ikhi4722x4yn6e
'@vue/eslint-config-typescript': 10.0.0_o7yw3kwpe6b36wqzg4zwra6quy '@vue/eslint-config-typescript': 10.0.0_ssewovz4aeqmfxc5voqm6t57tm
'@vue/test-utils': 2.0.0_vue@3.2.37 '@vue/test-utils': 2.0.2_vue@3.2.37
'@vue/tsconfig': 0.1.3_@types+node@16.11.38 '@vue/tsconfig': 0.1.3_@types+node@16.11.44
eslint: 8.17.0 eslint: 8.19.0
eslint-plugin-vue: 8.7.1_eslint@8.17.0 eslint-plugin-vue: 8.7.1_eslint@8.19.0
jsdom: 19.0.0 jsdom: 19.0.0
npm-run-all: 4.1.5 npm-run-all: 4.1.5
prettier: 2.6.2 prettier: 2.7.1
typescript: 4.7.3 typescript: 4.7.4
vite: 2.9.10 vite: 2.9.14
vitest: 0.13.1_jsdom@19.0.0 vitest: 0.13.1_jsdom@19.0.0
vue-tsc: 0.35.2_typescript@4.7.3 vue-tsc: 0.35.2_typescript@4.7.4
packages: packages:
@@ -463,8 +463,8 @@ packages:
picomatch: 2.3.1 picomatch: 2.3.1
dev: true dev: true
/@rushstack/eslint-patch/1.1.3: /@rushstack/eslint-patch/1.1.4:
resolution: {integrity: sha512-WiBSI6JBIhC6LRIsB2Kwh8DsGTlbBU+mLRxJmAe3LjHTdkDpwIbEOZgoXBbZilk/vlfjK8i6nKRAvIRn1XaIMw==} resolution: {integrity: sha512-LwzQKA4vzIct1zNZzBmRKI9QuNpLgTQMEjsQLf3BXuGYb3QPTP4Yjf6mkdX+X1mYttZ808QpOwAzZjv28kq7DA==}
dev: true dev: true
/@tootallnate/once/2.0.0: /@tootallnate/once/2.0.0:
@@ -485,7 +485,7 @@ packages:
/@types/jsdom/16.2.14: /@types/jsdom/16.2.14:
resolution: {integrity: sha512-6BAy1xXEmMuHeAJ4Fv4yXKwBDTGTOseExKE3OaHiNycdHdZw59KfYzrt0DkDluvwmik1HRt6QS7bImxUmpSy+w==} resolution: {integrity: sha512-6BAy1xXEmMuHeAJ4Fv4yXKwBDTGTOseExKE3OaHiNycdHdZw59KfYzrt0DkDluvwmik1HRt6QS7bImxUmpSy+w==}
dependencies: dependencies:
'@types/node': 16.11.38 '@types/node': 16.11.44
'@types/parse5': 6.0.3 '@types/parse5': 6.0.3
'@types/tough-cookie': 4.0.2 '@types/tough-cookie': 4.0.2
dev: true dev: true
@@ -494,8 +494,8 @@ packages:
resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==}
dev: true dev: true
/@types/node/16.11.38: /@types/node/16.11.44:
resolution: {integrity: sha512-hjO/0K140An3GWDw2HJfq7gko3wWeznbjXgg+rzPdVzhe198hp4x2i1dgveAOEiFKd8sOilAxzoSJiVv5P/CUg==} resolution: {integrity: sha512-gwP6+QDgL5TDBIWh1lbYh3EFPU11pa+8xcamcsA3ROkp3A9X+/3Y5cRgq93VPEEE+CGfxlQnqkg1kkWGBgh3fw==}
dev: true dev: true
/@types/parse5/6.0.3: /@types/parse5/6.0.3:
@@ -506,7 +506,7 @@ packages:
resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==}
dev: true dev: true
/@typescript-eslint/eslint-plugin/5.27.1_aq7uryhocdbvbqum33pitcm3y4: /@typescript-eslint/eslint-plugin/5.27.1_2g5gv25qcpx7aydtlrn2zdzrku:
resolution: {integrity: sha512-6dM5NKT57ZduNnJfpY81Phe9nc9wolnMCnknb1im6brWi1RYv84nbMS3olJa27B6+irUVV1X/Wb+Am0FjJdGFw==} resolution: {integrity: sha512-6dM5NKT57ZduNnJfpY81Phe9nc9wolnMCnknb1im6brWi1RYv84nbMS3olJa27B6+irUVV1X/Wb+Am0FjJdGFw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
@@ -517,23 +517,23 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/parser': 5.27.1_ud6rd4xtew5bv4yhvkvu24pzm4 '@typescript-eslint/parser': 5.27.1_4x5o4skxv6sl53vpwefgt23khm
'@typescript-eslint/scope-manager': 5.27.1 '@typescript-eslint/scope-manager': 5.27.1
'@typescript-eslint/type-utils': 5.27.1_ud6rd4xtew5bv4yhvkvu24pzm4 '@typescript-eslint/type-utils': 5.27.1_4x5o4skxv6sl53vpwefgt23khm
'@typescript-eslint/utils': 5.27.1_ud6rd4xtew5bv4yhvkvu24pzm4 '@typescript-eslint/utils': 5.27.1_4x5o4skxv6sl53vpwefgt23khm
debug: 4.3.4 debug: 4.3.4
eslint: 8.17.0 eslint: 8.19.0
functional-red-black-tree: 1.0.1 functional-red-black-tree: 1.0.1
ignore: 5.2.0 ignore: 5.2.0
regexpp: 3.2.0 regexpp: 3.2.0
semver: 7.3.7 semver: 7.3.7
tsutils: 3.21.0_typescript@4.7.3 tsutils: 3.21.0_typescript@4.7.4
typescript: 4.7.3 typescript: 4.7.4
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/parser/5.27.1_ud6rd4xtew5bv4yhvkvu24pzm4: /@typescript-eslint/parser/5.27.1_4x5o4skxv6sl53vpwefgt23khm:
resolution: {integrity: sha512-7Va2ZOkHi5NP+AZwb5ReLgNF6nWLGTeUJfxdkVUAPPSaAdbWNnFZzLZ4EGGmmiCTg+AwlbE1KyUYTBglosSLHQ==} resolution: {integrity: sha512-7Va2ZOkHi5NP+AZwb5ReLgNF6nWLGTeUJfxdkVUAPPSaAdbWNnFZzLZ4EGGmmiCTg+AwlbE1KyUYTBglosSLHQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
@@ -545,10 +545,10 @@ packages:
dependencies: dependencies:
'@typescript-eslint/scope-manager': 5.27.1 '@typescript-eslint/scope-manager': 5.27.1
'@typescript-eslint/types': 5.27.1 '@typescript-eslint/types': 5.27.1
'@typescript-eslint/typescript-estree': 5.27.1_typescript@4.7.3 '@typescript-eslint/typescript-estree': 5.27.1_typescript@4.7.4
debug: 4.3.4 debug: 4.3.4
eslint: 8.17.0 eslint: 8.19.0
typescript: 4.7.3 typescript: 4.7.4
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true dev: true
@@ -561,7 +561,7 @@ packages:
'@typescript-eslint/visitor-keys': 5.27.1 '@typescript-eslint/visitor-keys': 5.27.1
dev: true dev: true
/@typescript-eslint/type-utils/5.27.1_ud6rd4xtew5bv4yhvkvu24pzm4: /@typescript-eslint/type-utils/5.27.1_4x5o4skxv6sl53vpwefgt23khm:
resolution: {integrity: sha512-+UC1vVUWaDHRnC2cQrCJ4QtVjpjjCgjNFpg8b03nERmkHv9JV9X5M19D7UFMd+/G7T/sgFwX2pGmWK38rqyvXw==} resolution: {integrity: sha512-+UC1vVUWaDHRnC2cQrCJ4QtVjpjjCgjNFpg8b03nERmkHv9JV9X5M19D7UFMd+/G7T/sgFwX2pGmWK38rqyvXw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
@@ -571,11 +571,11 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/utils': 5.27.1_ud6rd4xtew5bv4yhvkvu24pzm4 '@typescript-eslint/utils': 5.27.1_4x5o4skxv6sl53vpwefgt23khm
debug: 4.3.4 debug: 4.3.4
eslint: 8.17.0 eslint: 8.19.0
tsutils: 3.21.0_typescript@4.7.3 tsutils: 3.21.0_typescript@4.7.4
typescript: 4.7.3 typescript: 4.7.4
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true dev: true
@@ -585,7 +585,7 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true dev: true
/@typescript-eslint/typescript-estree/5.27.1_typescript@4.7.3: /@typescript-eslint/typescript-estree/5.27.1_typescript@4.7.4:
resolution: {integrity: sha512-DnZvvq3TAJ5ke+hk0LklvxwYsnXpRdqUY5gaVS0D4raKtbznPz71UJGnPTHEFo0GDxqLOLdMkkmVZjSpET1hFw==} resolution: {integrity: sha512-DnZvvq3TAJ5ke+hk0LklvxwYsnXpRdqUY5gaVS0D4raKtbznPz71UJGnPTHEFo0GDxqLOLdMkkmVZjSpET1hFw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
@@ -600,13 +600,13 @@ packages:
globby: 11.1.0 globby: 11.1.0
is-glob: 4.0.3 is-glob: 4.0.3
semver: 7.3.7 semver: 7.3.7
tsutils: 3.21.0_typescript@4.7.3 tsutils: 3.21.0_typescript@4.7.4
typescript: 4.7.3 typescript: 4.7.4
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/utils/5.27.1_ud6rd4xtew5bv4yhvkvu24pzm4: /@typescript-eslint/utils/5.27.1_4x5o4skxv6sl53vpwefgt23khm:
resolution: {integrity: sha512-mZ9WEn1ZLDaVrhRaYgzbkXBkTPghPFsup8zDbbsYTxC5OmqrFE7skkKS/sraVsLP3TcT3Ki5CSyEFBRkLH/H/w==} resolution: {integrity: sha512-mZ9WEn1ZLDaVrhRaYgzbkXBkTPghPFsup8zDbbsYTxC5OmqrFE7skkKS/sraVsLP3TcT3Ki5CSyEFBRkLH/H/w==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
@@ -615,10 +615,10 @@ packages:
'@types/json-schema': 7.0.11 '@types/json-schema': 7.0.11
'@typescript-eslint/scope-manager': 5.27.1 '@typescript-eslint/scope-manager': 5.27.1
'@typescript-eslint/types': 5.27.1 '@typescript-eslint/types': 5.27.1
'@typescript-eslint/typescript-estree': 5.27.1_typescript@4.7.3 '@typescript-eslint/typescript-estree': 5.27.1_typescript@4.7.4
eslint: 8.17.0 eslint: 8.19.0
eslint-scope: 5.1.1 eslint-scope: 5.1.1
eslint-utils: 3.0.0_eslint@8.17.0 eslint-utils: 3.0.0_eslint@8.19.0
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
- typescript - typescript
@@ -646,14 +646,14 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@vitejs/plugin-vue/2.3.3_vite@2.9.10+vue@3.2.37: /@vitejs/plugin-vue/2.3.3_vite@2.9.14+vue@3.2.37:
resolution: {integrity: sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==} resolution: {integrity: sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==}
engines: {node: '>=12.0.0'} engines: {node: '>=12.0.0'}
peerDependencies: peerDependencies:
vite: ^2.5.10 vite: ^2.5.10
vue: ^3.2.25 vue: ^3.2.25
dependencies: dependencies:
vite: 2.9.10 vite: 2.9.14
vue: 3.2.37 vue: 3.2.37
dev: true dev: true
@@ -742,19 +742,19 @@ packages:
'@vue/compiler-dom': 3.2.37 '@vue/compiler-dom': 3.2.37
'@vue/shared': 3.2.37 '@vue/shared': 3.2.37
/@vue/eslint-config-prettier/7.0.0_ddjd75dz7x3czaucyvuaamiqdi: /@vue/eslint-config-prettier/7.0.0_exbhzpnbupd3ikhi4722x4yn6e:
resolution: {integrity: sha512-/CTc6ML3Wta1tCe1gUeO0EYnVXfo3nJXsIhZ8WJr3sov+cGASr6yuiibJTL6lmIBm7GobopToOuB3B6AWyV0Iw==} resolution: {integrity: sha512-/CTc6ML3Wta1tCe1gUeO0EYnVXfo3nJXsIhZ8WJr3sov+cGASr6yuiibJTL6lmIBm7GobopToOuB3B6AWyV0Iw==}
peerDependencies: peerDependencies:
eslint: '>= 7.28.0' eslint: '>= 7.28.0'
prettier: '>= 2.0.0' prettier: '>= 2.0.0'
dependencies: dependencies:
eslint: 8.17.0 eslint: 8.19.0
eslint-config-prettier: 8.5.0_eslint@8.17.0 eslint-config-prettier: 8.5.0_eslint@8.19.0
eslint-plugin-prettier: 4.0.0_ucegkljdju7q4zmvwxzqoprf3y eslint-plugin-prettier: 4.0.0_7uxdfn2xinezdgvmbammh6ev5i
prettier: 2.6.2 prettier: 2.7.1
dev: true dev: true
/@vue/eslint-config-typescript/10.0.0_o7yw3kwpe6b36wqzg4zwra6quy: /@vue/eslint-config-typescript/10.0.0_ssewovz4aeqmfxc5voqm6t57tm:
resolution: {integrity: sha512-F94cL8ug3FaYXlCfU5/wiGjk1qeadmoBpRGAOBq+qre3Smdupa59dd6ZJrsfRODpsMPyTG7330juMDsUvpZ3Rw==} resolution: {integrity: sha512-F94cL8ug3FaYXlCfU5/wiGjk1qeadmoBpRGAOBq+qre3Smdupa59dd6ZJrsfRODpsMPyTG7330juMDsUvpZ3Rw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
@@ -765,12 +765,12 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/eslint-plugin': 5.27.1_aq7uryhocdbvbqum33pitcm3y4 '@typescript-eslint/eslint-plugin': 5.27.1_2g5gv25qcpx7aydtlrn2zdzrku
'@typescript-eslint/parser': 5.27.1_ud6rd4xtew5bv4yhvkvu24pzm4 '@typescript-eslint/parser': 5.27.1_4x5o4skxv6sl53vpwefgt23khm
eslint: 8.17.0 eslint: 8.19.0
eslint-plugin-vue: 8.7.1_eslint@8.17.0 eslint-plugin-vue: 8.7.1_eslint@8.19.0
typescript: 4.7.3 typescript: 4.7.4
vue-eslint-parser: 8.3.0_eslint@8.17.0 vue-eslint-parser: 8.3.0_eslint@8.19.0
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true dev: true
@@ -814,15 +814,15 @@ packages:
/@vue/shared/3.2.37: /@vue/shared/3.2.37:
resolution: {integrity: sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==} resolution: {integrity: sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==}
/@vue/test-utils/2.0.0_vue@3.2.37: /@vue/test-utils/2.0.2_vue@3.2.37:
resolution: {integrity: sha512-zL5kygNq7hONrO1CzaUGprEAklAX+pH8J1MPMCU3Rd2xtSYkZ+PmKU3oEDRg8VAGdL5lNJHzDgrud5amFPtirw==} resolution: {integrity: sha512-E2P4oXSaWDqTZNbmKZFVLrNN/siVN78YkEqs7pHryWerrlZR9bBFLWdJwRoguX45Ru6HxIflzKl4vQvwRMwm5g==}
peerDependencies: peerDependencies:
vue: ^3.0.1 vue: ^3.0.1
dependencies: dependencies:
vue: 3.2.37 vue: 3.2.37
dev: true dev: true
/@vue/tsconfig/0.1.3_@types+node@16.11.38: /@vue/tsconfig/0.1.3_@types+node@16.11.44:
resolution: {integrity: sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==} resolution: {integrity: sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==}
peerDependencies: peerDependencies:
'@types/node': '*' '@types/node': '*'
@@ -830,7 +830,7 @@ packages:
'@types/node': '@types/node':
optional: true optional: true
dependencies: dependencies:
'@types/node': 16.11.38 '@types/node': 16.11.44
dev: true dev: true
/abab/2.0.6: /abab/2.0.6:
@@ -1458,16 +1458,16 @@ packages:
source-map: 0.6.1 source-map: 0.6.1
dev: true dev: true
/eslint-config-prettier/8.5.0_eslint@8.17.0: /eslint-config-prettier/8.5.0_eslint@8.19.0:
resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
eslint: '>=7.0.0' eslint: '>=7.0.0'
dependencies: dependencies:
eslint: 8.17.0 eslint: 8.19.0
dev: true dev: true
/eslint-plugin-prettier/4.0.0_ucegkljdju7q4zmvwxzqoprf3y: /eslint-plugin-prettier/4.0.0_7uxdfn2xinezdgvmbammh6ev5i:
resolution: {integrity: sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==} resolution: {integrity: sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==}
engines: {node: '>=6.0.0'} engines: {node: '>=6.0.0'}
peerDependencies: peerDependencies:
@@ -1478,25 +1478,25 @@ packages:
eslint-config-prettier: eslint-config-prettier:
optional: true optional: true
dependencies: dependencies:
eslint: 8.17.0 eslint: 8.19.0
eslint-config-prettier: 8.5.0_eslint@8.17.0 eslint-config-prettier: 8.5.0_eslint@8.19.0
prettier: 2.6.2 prettier: 2.7.1
prettier-linter-helpers: 1.0.0 prettier-linter-helpers: 1.0.0
dev: true dev: true
/eslint-plugin-vue/8.7.1_eslint@8.17.0: /eslint-plugin-vue/8.7.1_eslint@8.19.0:
resolution: {integrity: sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==} resolution: {integrity: sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
dependencies: dependencies:
eslint: 8.17.0 eslint: 8.19.0
eslint-utils: 3.0.0_eslint@8.17.0 eslint-utils: 3.0.0_eslint@8.19.0
natural-compare: 1.4.0 natural-compare: 1.4.0
nth-check: 2.1.1 nth-check: 2.1.1
postcss-selector-parser: 6.0.10 postcss-selector-parser: 6.0.10
semver: 7.3.7 semver: 7.3.7
vue-eslint-parser: 8.3.0_eslint@8.17.0 vue-eslint-parser: 8.3.0_eslint@8.19.0
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true dev: true
@@ -1517,13 +1517,13 @@ packages:
estraverse: 5.3.0 estraverse: 5.3.0
dev: true dev: true
/eslint-utils/3.0.0_eslint@8.17.0: /eslint-utils/3.0.0_eslint@8.19.0:
resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
peerDependencies: peerDependencies:
eslint: '>=5' eslint: '>=5'
dependencies: dependencies:
eslint: 8.17.0 eslint: 8.19.0
eslint-visitor-keys: 2.1.0 eslint-visitor-keys: 2.1.0
dev: true dev: true
@@ -1537,8 +1537,8 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true dev: true
/eslint/8.17.0: /eslint/8.19.0:
resolution: {integrity: sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw==} resolution: {integrity: sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
hasBin: true hasBin: true
dependencies: dependencies:
@@ -1551,7 +1551,7 @@ packages:
doctrine: 3.0.0 doctrine: 3.0.0
escape-string-regexp: 4.0.0 escape-string-regexp: 4.0.0
eslint-scope: 7.1.1 eslint-scope: 7.1.1
eslint-utils: 3.0.0_eslint@8.17.0 eslint-utils: 3.0.0_eslint@8.19.0
eslint-visitor-keys: 3.3.0 eslint-visitor-keys: 3.3.0
espree: 9.3.2 espree: 9.3.2
esquery: 1.4.0 esquery: 1.4.0
@@ -2428,8 +2428,8 @@ packages:
fast-diff: 1.2.0 fast-diff: 1.2.0
dev: true dev: true
/prettier/2.6.2: /prettier/2.7.1:
resolution: {integrity: sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==} resolution: {integrity: sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==}
engines: {node: '>=10.13.0'} engines: {node: '>=10.13.0'}
hasBin: true hasBin: true
dev: true dev: true
@@ -2687,7 +2687,7 @@ packages:
dev: true dev: true
/text-table/0.2.0: /text-table/0.2.0:
resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true dev: true
/tinypool/0.1.3: /tinypool/0.1.3:
@@ -2731,14 +2731,14 @@ packages:
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
dev: true dev: true
/tsutils/3.21.0_typescript@4.7.3: /tsutils/3.21.0_typescript@4.7.4:
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
engines: {node: '>= 6'} engines: {node: '>= 6'}
peerDependencies: peerDependencies:
typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
dependencies: dependencies:
tslib: 1.14.1 tslib: 1.14.1
typescript: 4.7.3 typescript: 4.7.4
dev: true dev: true
/type-check/0.3.2: /type-check/0.3.2:
@@ -2765,8 +2765,8 @@ packages:
engines: {node: '>=10'} engines: {node: '>=10'}
dev: true dev: true
/typescript/4.7.3: /typescript/4.7.4:
resolution: {integrity: sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==} resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==}
engines: {node: '>=4.2.0'} engines: {node: '>=4.2.0'}
hasBin: true hasBin: true
dev: true dev: true
@@ -2792,7 +2792,7 @@ packages:
dev: true dev: true
/util-deprecate/1.0.2: /util-deprecate/1.0.2:
resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
dev: true dev: true
/v8-compile-cache/2.3.0: /v8-compile-cache/2.3.0:
@@ -2806,8 +2806,8 @@ packages:
spdx-expression-parse: 3.0.1 spdx-expression-parse: 3.0.1
dev: true dev: true
/vite/2.9.10: /vite/2.9.14:
resolution: {integrity: sha512-TwZRuSMYjpTurLqXspct+HZE7ONiW9d+wSWgvADGxhDPPyoIcNywY+RX4ng+QpK30DCa1l/oZgi2PLZDibhzbQ==} resolution: {integrity: sha512-P/UCjSpSMcE54r4mPak55hWAZPlyfS369svib/gpmz8/01L822lMPOJ/RYW6tLCe1RPvMvOsJ17erf55bKp4Hw==}
engines: {node: '>=12.2.0'} engines: {node: '>=12.2.0'}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@@ -2857,7 +2857,7 @@ packages:
local-pkg: 0.4.1 local-pkg: 0.4.1
tinypool: 0.1.3 tinypool: 0.1.3
tinyspy: 0.3.2 tinyspy: 0.3.2
vite: 2.9.10 vite: 2.9.14
transitivePeerDependencies: transitivePeerDependencies:
- less - less
- sass - sass
@@ -2865,14 +2865,14 @@ packages:
- supports-color - supports-color
dev: true dev: true
/vue-eslint-parser/8.3.0_eslint@8.17.0: /vue-eslint-parser/8.3.0_eslint@8.19.0:
resolution: {integrity: sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==} resolution: {integrity: sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
eslint: '>=6.0.0' eslint: '>=6.0.0'
dependencies: dependencies:
debug: 4.3.4 debug: 4.3.4
eslint: 8.17.0 eslint: 8.19.0
eslint-scope: 7.1.1 eslint-scope: 7.1.1
eslint-visitor-keys: 3.3.0 eslint-visitor-keys: 3.3.0
espree: 9.3.2 espree: 9.3.2
@@ -2883,14 +2883,14 @@ packages:
- supports-color - supports-color
dev: true dev: true
/vue-tsc/0.35.2_typescript@4.7.3: /vue-tsc/0.35.2_typescript@4.7.4:
resolution: {integrity: sha512-aqY16VlODHzqtKGUkqdumNpH+s5ABCkufRyvMKQlL/mua+N2DfSVnHufzSNNUMr7vmOO0YsNg27jsspBMq4iGA==} resolution: {integrity: sha512-aqY16VlODHzqtKGUkqdumNpH+s5ABCkufRyvMKQlL/mua+N2DfSVnHufzSNNUMr7vmOO0YsNg27jsspBMq4iGA==}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
typescript: '*' typescript: '*'
dependencies: dependencies:
'@volar/vue-typescript': 0.35.2 '@volar/vue-typescript': 0.35.2
typescript: 4.7.3 typescript: 4.7.4
dev: true dev: true
/vue/3.2.37: /vue/3.2.37:
@@ -2979,7 +2979,7 @@ packages:
dev: true dev: true
/wrappy/1.0.2: /wrappy/1.0.2:
resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
dev: true dev: true
/ws/8.7.0: /ws/8.7.0:

View File

@@ -11,6 +11,9 @@ export default definePlugin({
path: "/hello-world", path: "/hello-world",
name: "HelloWorld", name: "HelloWorld",
component: DefaultView, component: DefaultView,
meta: {
permissions: ["plugin:apples:view"],
},
}, },
], ],
menus: [ menus: [
@@ -26,10 +29,6 @@ export default definePlugin({
}, },
], ],
extensionPoints: {}, extensionPoints: {},
activated() { activated() {},
// TODO deactivated() {},
},
deactivated() {
// TODO
},
}); });

View File

@@ -1,5 +1,5 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from "vue"; import {defineComponent} from "vue";
import logo from "../assets/logo.svg"; import logo from "../assets/logo.svg";
export default defineComponent({ export default defineComponent({
@@ -13,7 +13,7 @@ export default defineComponent({
</script> </script>
<template> <template>
<div class="title">Hello World</div> <div class="title">Hello World</div>
<img :src="logo" alt="logo" /> <img v-permission="['plugin:apples:view']" :src="logo" alt="logo"/>
</template> </template>
<style scoped> <style scoped>
.title { .title {

View File

@@ -24,7 +24,12 @@ export default defineConfig({
fileName: () => "main.js", fileName: () => "main.js",
}, },
rollupOptions: { rollupOptions: {
external: ["vue", "@halo-dev/shared", "@halo-dev/components","vue-router"], external: [
"vue",
"@halo-dev/shared",
"@halo-dev/components",
"vue-router",
],
output: { output: {
globals: { globals: {
vue: "Vue", vue: "Vue",

View File

@@ -5,12 +5,12 @@ plugins {
id 'java' id 'java'
} }
group 'io.github.guqing' group 'run.halo.template'
version '0.0.1-SNAPSHOT' version '0.0.1-SNAPSHOT'
sourceCompatibility = JavaVersion.VERSION_17 sourceCompatibility = JavaVersion.VERSION_17
repositories { repositories {
maven {url 'https://s01.oss.sonatype.org/content/repositories/snapshots'} maven { url 'https://s01.oss.sonatype.org/content/repositories/snapshots' }
maven { url 'https://repo.spring.io/milestone' } maven { url 'https://repo.spring.io/milestone' }
mavenCentral() mavenCentral()
} }
@@ -60,7 +60,7 @@ task buildFrontend(type: NpxTask) {
args = ['build'] args = ['build']
} }
task pnpmInstall (type: NpxTask) { task pnpmInstall(type: NpxTask) {
command = "pnpm" command = "pnpm"
args = ["install"] args = ["install"]
} }

View File

@@ -6,5 +6,5 @@ pluginManagement {
gradlePluginPortal() gradlePluginPortal()
} }
} }
rootProject.name = 'halo-plugin-template' rootProject.name = 'plugin-template'

View File

@@ -1,4 +1,4 @@
package io.github.guqing.template; package run.halo.template;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
@@ -11,7 +11,7 @@ import run.halo.app.extension.GVK;
* @since 2.0.0 * @since 2.0.0
*/ */
@GVK(group = "apple.guqing.xyz", kind = "Apple", @GVK(group = "apple.guqing.xyz", kind = "Apple",
version = "v1alpha1", singular = "apple", plural = "apples") version = "v1alpha1", singular = "apple", plural = "apples")
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class Apple extends AbstractExtension { public class Apple extends AbstractExtension {

View File

@@ -1,4 +1,4 @@
package io.github.guqing.template; package run.halo.template;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;

View File

@@ -1,4 +1,4 @@
package io.github.guqing.template; package run.halo.template;
import org.pf4j.PluginWrapper; import org.pf4j.PluginWrapper;
import run.halo.app.extension.Scheme; import run.halo.app.extension.Scheme;
@@ -9,10 +9,10 @@ import run.halo.app.plugin.BasePlugin;
* @author guqing * @author guqing
* @since 2.0.0 * @since 2.0.0
*/ */
public class ApplePlugin extends BasePlugin { public class TemplatePlugin extends BasePlugin {
private final SchemeManager schemeManager; private final SchemeManager schemeManager;
public ApplePlugin(PluginWrapper wrapper) { public TemplatePlugin(PluginWrapper wrapper) {
super(wrapper); super(wrapper);
this.schemeManager = getApplicationContext().getBean(SchemeManager.class); this.schemeManager = getApplicationContext().getBean(SchemeManager.class);
} }

File diff suppressed because one or more lines are too long

View File

@@ -6,7 +6,7 @@ metadata:
halo.run/role-template: "true" halo.run/role-template: "true"
annotations: annotations:
rbac.authorization.halo.run/module: "Apple Management" rbac.authorization.halo.run/module: "Apple Management"
rbac.authorization.halo.run/ui-permissions: "[\"apples:view\"]" rbac.authorization.halo.run/ui-permissions: "[\"plugin:apples:view\"]"
rbac.authorization.halo.run/display-name: "苹果查看" rbac.authorization.halo.run/display-name: "苹果查看"
rules: rules:
- apiGroups: [ "plugins.api.halo.run" ] - apiGroups: [ "plugins.api.halo.run" ]
@@ -21,7 +21,7 @@ metadata:
halo.run/role-template: "true" halo.run/role-template: "true"
annotations: annotations:
rbac.authorization.halo.run/dependencies: "[\"role-template-apple-view\"]" rbac.authorization.halo.run/dependencies: "[\"role-template-apple-view\"]"
rbac.authorization.halo.run/ui-permissions: "[\"apples:delete\",\"apples:update\"]" rbac.authorization.halo.run/ui-permissions: "[\"plugin:apples:delete\",\"plugin:apples:update\"]"
rbac.authorization.halo.run/module: "Apple Management" rbac.authorization.halo.run/module: "Apple Management"
rbac.authorization.halo.run/display-name: "苹果管理" rbac.authorization.halo.run/display-name: "苹果管理"
rules: rules:

View File

@@ -0,0 +1,29 @@
apiVersion: v1alpha1
kind: Setting
metadata:
name: template-settings
spec:
- group: basic
label: 基本设置
formSchema:
- $formkit: text
help: This will be used for your account.
label: Email
name: email
validation: required|email
- $formkit: text
label: 访问链接
name: url
- group: advanced
label: 高级设置
formSchema:
- $formkit: text
help: This will be used for your theme.
label: color
name: color
validation: required
- $formkit: color
help: This will be used for your theme.
label: color
name: color
validation: required

View File

@@ -2,19 +2,21 @@ apiVersion: plugin.halo.run/v1alpha1
kind: Plugin kind: Plugin
metadata: metadata:
# The name defines how the plugin is invoked,A unique name # The name defines how the plugin is invoked,A unique name
name: apples name: PluginTemplate
spec: spec:
enabled: true enabled: true
# 'version' is a valid semantic version string (see semver.org). # 'version' is a valid semantic version string (see semver.org).
version: 0.0.1-SNAPSHOT version: 0.0.1-SNAPSHOT
requires: "*" requires: "*"
author: guqing author: halo-dev
logo: https://guqing.xyz/avatar logo: https://halo.run/logo
pluginClass: io.github.guqing.template.ApplePlugin pluginClass: run.halo.template.TemplatePlugin
settingName: template-settings
configMapName: template-settings
# 'homepage' usually links to the GitHub repository of the plugin # 'homepage' usually links to the GitHub repository of the plugin
homepage: https://github.com/guqing/halo-plugin-template homepage: https://github.com/halo-sigs/halo-plugin-template
# 'displayName' explains what the plugin does in only a few words # 'displayName' explains what the plugin does in only a few words
displayName: "测试插件" displayName: "插件快速开始模板"
description: "这是一个用来测试的插件" description: "这是一个插件快速开始模板"
license: license:
- name: "MIT" - name: "MIT"