Node API

reco_luan

defineKit

  • 类型:(options: KitOptions) => Kit
  • 描述:对套件进行声明,用来注册自定义命令和 GUI 的本地通信服务等。
  • 案例:
    import { defineKit, useServerSocket, type Kit } from 'revili/node'
    
    const demoKit: Kit = defineKit({
      // 插件名称
      name: 'revili-kit-demo',
    
      // GUI 客户端开发框架,默认 vue,后面会拓展 react、servlet、web component 等
      webFramework: 'vue'
    
      // 参考 https://vitejs.dev/config/
      viteOptions: {}
    
      // 注册可以和 GUI 通信的服务
      registerService(server) {
        // ...
      },
    
      // 注册 command 命令
      registerCommand({ program }) {
        program.command('test').action(() => {
          console.log('你触发了 test 命令!')
        })
      },
    })
    
    export default demoKit
    

getKitData

  • 类型:<T extends BasicRecord, K extends keyof KitData<T>>(prop?: K): Promise<KitData<T>[K] | null | KitData<T>>
  • 描述:获取当前 kit 的数据。
  • 案例:
    import { getKitData } from 'revili/node'
    
    // 获取所有数据
    const kitData = await getKitData<{ prop: string }>()
    // 获取指定数据
    const propOfKitData = await getKitData<{ prop: string }>('prop')
    

updateKitData

  • 类型:<T extends BasicRecord & Omit<KitData<T>, 'name' | 'installedAt'>>(partialData: Partial<KitData<T>>): Promise<void>
  • 描述:更新 kit 数据,只更新指定的字段。
  • 案例:
    import { updateKitData } from 'revili/node'
    
    await updateKitData<{ version: string; description: string }>({
      version: '1.0.1',
      description: '更新后的描述'
    })
    

updateKitDataItem

  • 类型:<T extends BasicRecord, K extends Exclude<keyof T, 'name' | 'installedAt'>(key: K, value: T[K]): Promise<void>
  • 描述:更新 kit 数据,仅更新指定的字段。
  • 案例:
    import { updateKitDataItem } from '@revili/helpers/node'
    
    await updateKitDataItem<{ version: string; description: string }>('version', '1.0.1')
    

useServerSocket

  • 类型:(server: ViteDevServer) => WebSocketServer | null
  • 描述:服务端与客户端的通信 API。
  • 案例:
    import {defineKit, useServerSocket, type Kit} from 'revili/node'
    
    const demoKit: Kit = defineKit({
      name: 'revili-kit-demo',
    
      registerService(server) {
        const socket = useServerSocket(server)
    
        socket?.on('event-name', (data: any) => {
          // ...
        })
    
        socket?.send('event-name', 'message')
      }
    })
    
    export default demoKit
    

ts 声明

interface KitOptions {
  name: string
  webFramework?: 'vue'
  viteOptions?: UserConfig
  registerService?: (server: ViteDevServer) => void
  registerCommand: (params: {program: CAC; reviliConfig?: ReviliConfig}) => void
}

type BasicRecord = Record<string | number | symbol, any>

type KitData<T extends BasicRecord = BasicRecord> = {
  version?: string
  description?: string
} & T
最后更新时间 12/17/2024, 3:06:36 PM