This commit is contained in:
lixin 2025-01-23 12:23:50 +08:00
commit 0ea7bf7769
11 changed files with 255 additions and 0 deletions

4
.gitattributes vendored Normal file
View File

@ -0,0 +1,4 @@
*.js text eol=lf
*.json text eol=lf
*.ts text eol=lf
*.code-snippets text eol=lf

6
.gitignore vendored Normal file
View File

@ -0,0 +1,6 @@
node_modules/
dist/
release/
yarn.lock
pnpm-lock.yaml
cache/

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2023 cool-team-official
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

84
README.md Normal file
View File

@ -0,0 +1,84 @@
![](https://cool-js.com/team/gist.jpg)
## 官网
[https://cool-js.com](https://cool-js.com)
[插件开发文档](https://cool-js.com/admin/node/core/plugin.html#使用插件)
## 视频教程
[1、插件开发](https://www.bilibili.com/video/BV1aa4y187jh/)
[2、插件发布与使用](https://www.bilibili.com/video/BV1mw41157bx/)
## README 示例
下面时插件介绍的示例,你可以按照这样的规范写,当然不限于这种形式,你可以自由发挥,只要能表达清楚即可。
### 介绍
这是个示例插件, 写了一些简单的方法
### 标识
调用插件的时候需要用到标识,标识是唯一的,不能重复,建议使用英文,不要使用中文,对应插件 `plugin.json` 中的 `key` 字段
- 标识test
### 配置
```json
{
"appId": "xxx的appId",
"appSecret": "xxx的appSecret"
}
```
### 方法
下面是插件提供的一些方法
- show
```ts
/**
* 展示插件信息
* @param a 参数a
* @param b 参数b
* @returns 插件信息
*/
async show(a, b)
```
- demo
```ts
/**
* 请求网络示例
* @returns 百度的请求结果
*/
async demo()
```
### 调用示例
```ts
@Inject()
pluginService: PluginService;
// 获取插件实例
const instance = await this.pluginService.getInstance('test');
// 调用show
await instance.show(1, 2);
// 调用demo
await instance.demo();
```
### 更新日志
- v1.0.0 (2024-04-15)
- 初始版本

BIN
assets/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

29
package.json Normal file
View File

@ -0,0 +1,29 @@
{
"name": "cool-admin-midawy-plugin",
"version": "7.1.0",
"scripts": {
"dev": "ts-node test/index.ts",
"test": "cool-plugin-cli --build & node dist/test/index.js",
"build": "cool-plugin-cli --build",
"release": "cool-plugin-cli --release"
},
"engines": {
"node": ">=16"
},
"license": "MIT",
"devDependencies": {
"@cool-midway/plugin-cli": "^7.1.9",
"@types/node": "^20.11.30",
"axios": "^1.6.8",
"decompress": "^4.2.1",
"download": "^8.0.0",
"jsonwebtoken": "^9.0.2",
"lodash": "^4.17.21",
"md5": "^2.3.0",
"moment": "^2.30.1",
"ts-node": "^10.9.2",
"typescript": "^5.4.3",
"uuid": "^9.0.1",
"ws": "^8.16.0"
}
}

16
plugin.json Normal file
View File

@ -0,0 +1,16 @@
{
"name": "测试",
"key": "test",
"hook": "",
"singleton": false,
"version": "1.0.0",
"description": "插件描述",
"author": "作者",
"logo": "assets/logo.png",
"readme": "README.md",
"config": {
"appId": "@baseDir/1.md",
"appSecret": "xxxxx",
"filePath": "@baseDir/xxxxx"
}
}

66
src/index.ts Normal file
View File

@ -0,0 +1,66 @@
import { BasePlugin } from "@cool-midway/plugin-cli";
import axios from "axios";
import fs from "fs";
import "./other";
/**
*
*/
export class CoolPlugin extends BasePlugin {
/**
*
*/
async ready() {
console.log("插件就绪");
}
/**
*
* @param a a
* @param b b
* @returns
*/
async show(a, b) {
console.log("传参", a, b);
return this.pluginInfo;
}
/**
* 使使cool-admin的缓存
*/
async useCache() {
await this.cache.set("a", "一个项目用COOL就够了");
const r = await this.cache.get("a");
console.log(r);
}
/**
*
*/
async usePlugin() {
// 获得其他插件开发的时候无法调试只有安装到cool-admin中才能调试
const plugin = await this.pluginService.getInstance("xxx");
console.log(plugin);
}
/**
*
*/
async demo() {
const res = await axios.get("https://www.baidu.com");
return res.data;
}
/**
*
*/
async readFile() {
// 如果是本地开发filePath指向的是插件的根目录的文件
const { filePath } = this.pluginInfo.config;
const result = fs.readFileSync(filePath);
return result.toString();
}
}
// 导出插件实例, Plugin名称不可修改
export const Plugin = CoolPlugin;

1
src/other.ts Normal file
View File

@ -0,0 +1 @@
console.log('这是另外一个文件')

13
test/index.ts Normal file
View File

@ -0,0 +1,13 @@
import { Plugin } from "../src/index";
import pluginInfo from "../plugin.json";
// 实例化插件
const instance = new Plugin();
// 初始化插件
instance.init(pluginInfo);
(async () => {
// 调用插件方法
const res = await instance.demo();
console.log(res);
})();

15
tsconfig.json Normal file
View File

@ -0,0 +1,15 @@
{
"compilerOptions": {
"target": "ES2018",
"module": "CommonJS",
"esModuleInterop": true,
"moduleResolution": "Node",
"noImplicitAny": false,
"skipLibCheck": true,
"declaration": true,
"resolveJsonModule":true,
"pretty": true,
"outDir": "./dist"
},
"include": ["core", "src", "test"]
}