扩展
信息
如何开发扩展并推送到npmjs
如何识别的
大致的目录结构
node_modules/ // Node.js 依赖包
├── pkg-name // 相关模块
│ ├── lib/ // 工程目录
│ │ └── index.js // 入口文件
│ └ ── package.json // 工程配置文件
会读取node_modules/pkg-name/package.json
解析并得到main
以入口文件的目录为工程目录
服务端
配置
package.json
{
"name": "@alemonjs/test", // * 包名
"version": "0.0.1", // * 版本号
"author": {
"name": "ningmengchongshui",
"email": "ningmengchongshui@gmail.com",
"url": "https://github.com/ningmengchongshui"
},
"type": "module", // * 仅支持esm
"main": "lib/index.js", // * 包入口
"scripts": {
"build": "npx lvy build"
},
"export": {
".": "./lib/index.js", // * 包入口
"./package": "./package.json" // * 包配置信息
},
"keywords": ["alemonjs"], // *
"publishConfig": {
"registry": "https://registry.npmjs.org", // *
"access": "public" // *
},
"alemonjs": {
// 应用服务器相关配置
"web": {
// html服务根目录。即 dist/index.html
"root": "dist"
}
}
// 要发布模块,请确保没有以下内容。
// "private": true,
// "workspaces": ["packages/*"]
}
桌面端
配置
package.json
{
"export": {
"./desktop": "./lib/desktop.js" // * 桌面扩展入口脚本,固定导出
},
"alemonjs": {
// 应用服务器相关配置
"web": {
// html服务根目录。即 dist/index.html
"root": "dist"
},
// 桌面相关配置
"desktop": {
"logo": "public/logo.png",
// "logo": "antd.OpenAIOutlined",
"command": [
{
"name": "test",
"icon": "public/logo.png",
"command": "open.test" // 发送指令
}
],
"sidebars": [
{
"command": "open.test"
}
],
"menus": [
{
"command": "open.test"
}
]
}
}
}
type Desktop = {
// 应用基础LOGO
// 支持antd图标,如 antd.OpenAIOutlined
// https://ant.design/components/icon-cn
logo: string
// 指令输入框 - 窗体上方的指令输入框
command: CommandItem[]
// 侧边栏应用 - webview 里的 侧边栏
sidebars: CommandItem[]
// 菜单按钮 - 窗体的左侧导航栏
menus: CommandItem[]
// 控件按钮 - 窗体上方,指令输入框的两侧的控件按钮
controls: ControlItem[]
}
type CommandItem = {
name: string // 必要的command名
icon: string // 图标(可选) 支持antd图标
command: string // 要执行的指令
}
type ControlItem = {
position: 'left' | 'right' // 位置。macos默认右边,windows/linux默认左边。
icon: string // 图标 支持antd图标
command: string // 要执行的指令
}
指令
注意command有2类约定前缀
view.
view.home 前往首页
view.git-exp-manage git扩展管理
view.npm-exp-manage npm扩展管理
view.webview 应用中心
view.settings 设置
view.settings.about 设置-关于
view.settings.theme 设置-主题
view.settings.files 设置-文件
view.settings.notice 设置-更新日志
app.
app.open.devtools 打开开发者工具
周期
desktop.js
// 被激活的时候。
export const activate = context => {}
desktop.ts
// ts
import { Context } from '@alemonjs/process'
export const activate = (context: Context) => {}