init
This commit is contained in:
commit
0ea7bf7769
4
.gitattributes
vendored
Normal file
4
.gitattributes
vendored
Normal 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
6
.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
node_modules/
|
||||
dist/
|
||||
release/
|
||||
yarn.lock
|
||||
pnpm-lock.yaml
|
||||
cache/
|
21
LICENSE
Normal file
21
LICENSE
Normal 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
84
README.md
Normal file
@ -0,0 +1,84 @@
|
||||

|
||||
|
||||
## 官网
|
||||
|
||||
[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
BIN
assets/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.8 KiB |
29
package.json
Normal file
29
package.json
Normal 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
16
plugin.json
Normal 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
66
src/index.ts
Normal 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
1
src/other.ts
Normal file
@ -0,0 +1 @@
|
||||
console.log('这是另外一个文件')
|
13
test/index.ts
Normal file
13
test/index.ts
Normal 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
15
tsconfig.json
Normal 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"]
|
||||
}
|
Loading…
Reference in New Issue
Block a user