rubick/dev/index.html
2023-08-02 16:03:41 +08:00

112 lines
27 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>插件说明 | Rubick</title>
<meta name="generator" content="VuePress 1.9.9">
<meta name="description" content="你的开源桌面插件应用">
<link rel="preload" href="/rubick/assets/css/0.styles.a1fe2806.css" as="style"><link rel="preload" href="/rubick/assets/js/app.802a86ab.js" as="script"><link rel="preload" href="/rubick/assets/js/2.733019b2.js" as="script"><link rel="preload" href="/rubick/assets/js/9.3b2c34da.js" as="script"><link rel="preload" href="/rubick/assets/js/3.64801815.js" as="script"><link rel="prefetch" href="/rubick/assets/js/10.f7f1aa99.js"><link rel="prefetch" href="/rubick/assets/js/11.861f0d8b.js"><link rel="prefetch" href="/rubick/assets/js/12.8083ac2d.js"><link rel="prefetch" href="/rubick/assets/js/4.fc333d27.js"><link rel="prefetch" href="/rubick/assets/js/5.bfef3080.js"><link rel="prefetch" href="/rubick/assets/js/6.2d0a63f8.js"><link rel="prefetch" href="/rubick/assets/js/7.9c9172a7.js"><link rel="prefetch" href="/rubick/assets/js/8.010bfadc.js">
<link rel="stylesheet" href="/rubick/assets/css/0.styles.a1fe2806.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/rubick/" class="home-link router-link-active"><img src="/rubick/images/logo.png" alt="Rubick" class="logo"> <span class="site-name can-hide">Rubick</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/rubick/guide/" class="nav-link">
使用文档
</a></div><div class="nav-item"><a href="/rubick/dev/" aria-current="page" class="nav-link router-link-exact-active router-link-active">
开发者
</a></div> <a href="https://github.com/rubickCenter/rubick" target="_blank" rel="noopener noreferrer" class="repo-link">
Github
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/rubick/guide/" class="nav-link">
使用文档
</a></div><div class="nav-item"><a href="/rubick/dev/" aria-current="page" class="nav-link router-link-exact-active router-link-active">
开发者
</a></div> <a href="https://github.com/rubickCenter/rubick" target="_blank" rel="noopener noreferrer" class="repo-link">
Github
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><a href="/rubick/guide/" class="sidebar-link">使用文档</a></li><li><a href="/rubick/dev/" aria-current="page" class="active sidebar-link">插件开发</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/rubick/dev/#插件说明" class="sidebar-link">插件说明</a></li><li class="sidebar-sub-header"><a href="/rubick/dev/#开发-ui-插件" class="sidebar-link">开发 UI 插件</a></li><li class="sidebar-sub-header"><a href="/rubick/dev/#开发系统插件" class="sidebar-link">开发系统插件</a></li><li class="sidebar-sub-header"><a href="/rubick/dev/#发布插件" class="sidebar-link">发布插件</a></li></ul></li><li><a href="/rubick/super/" class="sidebar-link">特殊服务</a></li><li><a href="/rubick/api/" class="sidebar-link">API</a></li><li><a href="/rubick/run/" class="sidebar-link">贡献 rubick</a></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h2 id="插件说明"><a href="#插件说明" class="header-anchor">#</a> 插件说明</h2> <p><code>rubick</code> 插件分为 <code>UI插件</code><code>系统插件</code> 2类。下面分别介绍这 2 类插件的区别和作用。</p> <ol><li>UI 插件 <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>最常用</span>:都会有 UI 界面,用于和用户交互,且需要通过关键词搜索选择进行使用,比如 <code>斗图</code> 插件,有界面展示,且需要再搜索框内搜索关键词选择后进行呼起才能使用。</li> <li>系统插件:可能不会有 UI 界面,在 <code>rubick</code> 启动的时候,会注册执行系统插件。比如<code>超级面板</code> 插件,安装完成后,即可在 <code>rubick</code> 运行时随时使用,不需要任何关键词和匹配。</li></ol> <h2 id="开发-ui-插件"><a href="#开发-ui-插件" class="header-anchor">#</a> 开发 UI 插件</h2> <p>一个最基础插件的目录是这样的:</p> <div class="language- extra-class"><pre class="language-text"><code>rubick-plugin-demo
|-- index.html
|-- package.json
|-- preload.js
</code></pre></div><h3 id="文件说明"><a href="#文件说明" class="header-anchor">#</a> 文件说明</h3> <h4 id="package-json"><a href="#package-json" class="header-anchor">#</a> package.json</h4> <p>用于指定插件最基础的配置,一个最基础的配置信息如下:</p> <div class="language-json extra-class"><pre class="language-json"><code><span class="token punctuation">{</span>
<span class="token property">&quot;name&quot;</span><span class="token operator">:</span> <span class="token string">&quot;rubick-ui-plugin-demo&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;pluginName&quot;</span><span class="token operator">:</span> <span class="token string">&quot;插件demo&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;description&quot;</span><span class="token operator">:</span> <span class="token string">&quot;rubick ui 插件demo&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;author&quot;</span><span class="token operator">:</span> <span class="token string">&quot;muwoo&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;main&quot;</span><span class="token operator">:</span> <span class="token string">&quot;index.html&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;logo&quot;</span><span class="token operator">:</span> <span class="token string">&quot;https://www.img/demo.png&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;version&quot;</span><span class="token operator">:</span> <span class="token string">&quot;0.0.1&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;preload&quot;</span><span class="token operator">:</span><span class="token string">&quot;preload.js&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;homePage&quot;</span><span class="token operator">:</span> <span class="token string">&quot;https://gitee.com/rubick-center/rubick-ui-plugin-demo/raw/master/README.md&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;pluginType&quot;</span><span class="token operator">:</span> <span class="token string">&quot;ui&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;features&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span>
<span class="token punctuation">{</span>
<span class="token property">&quot;code&quot;</span><span class="token operator">:</span> <span class="token string">&quot;index&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;explain&quot;</span><span class="token operator">:</span> <span class="token string">&quot;测试插件&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;cmds&quot;</span><span class="token operator">:</span><span class="token punctuation">[</span>
<span class="token string">&quot;demo&quot;</span><span class="token punctuation">,</span>
<span class="token string">&quot;测试&quot;</span>
<span class="token punctuation">]</span>
<span class="token punctuation">}</span>
<span class="token punctuation">]</span>
<span class="token punctuation">}</span>
</code></pre></div><p>核心字段说明:</p> <ul><li>name 插件 <code>npm</code> 包名称,<span class="badge tip" style="vertical-align:top;" data-v-15b7b770>必填</span></li> <li>pluginName 插件显示名称,用于展示给使用者 <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>必填</span></li> <li>description 插件描述,描述这个插件的作用 <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>必填</span></li> <li>author 插件作者</li> <li>main 入口文件,一般为 <code>index.html</code></li> <li>logo 尺寸建议 200 * 200, 插件的 logo, 需要是 http/https 在线地址不支持本地logo <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>必填</span></li> <li>version 插件的版本 <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>必填</span></li> <li>preload 预加载脚本</li> <li>homePage: 插件 readme raw 地址</li> <li>pluginType: 插件类型枚举ui, system. 当前选 ui <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>必填</span></li> <li>features 插件核心功能列表 <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>必填</span></li> <li>features.code 插件某个功能的识别码,可用于区分不同的功能 <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>必填</span></li> <li>features.explain 插件某个功能的解释 <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>必填</span></li> <li>features.cmds 输入框内搜索该 cmd 进入插件 <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>必填</span></li></ul> <h4 id="index-html"><a href="#index-html" class="header-anchor">#</a> index.html</h4> <p>插件的入口文件,用于展示插件的样式,一个最基础的 <code>html</code> 结构可以是这样:</p> <div class="language-html extra-class"><pre class="language-html"><code><span class="token doctype"><span class="token punctuation">&lt;!</span><span class="token doctype-tag">DOCTYPE</span> <span class="token name">html</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>html</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>body</span><span class="token punctuation">&gt;</span></span>
hello Rubick
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>button</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">&quot;</span>showNotification<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>通知<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>button</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>body</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span><span class="token punctuation">&gt;</span></span><span class="token script"><span class="token language-javascript">
document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">'showNotification'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">addEventListener</span><span class="token punctuation">(</span><span class="token string">'click'</span><span class="token punctuation">,</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=&gt;</span> <span class="token punctuation">{</span>
window<span class="token punctuation">.</span><span class="token function">showNotification</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span>
</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</span></span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>html</span><span class="token punctuation">&gt;</span></span>
</code></pre></div><h4 id="preload-js"><a href="#preload-js" class="header-anchor">#</a> preload.js</h4> <p>细心的同学可能已经注意到上面的 <code>index.html</code> 使用了一个全局函数 <code>showNotification</code> 那么这个函数是在哪里定义的呢?
答案就是在 <code>preload.js</code> 里面。<code>preload.js</code> 可以为页面提供全局函数</p> <div class="language-js extra-class"><pre class="language-js"><code>window<span class="token punctuation">.</span><span class="token function-variable function">showNotification</span> <span class="token operator">=</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
rubick<span class="token punctuation">.</span><span class="token function">showNotification</span><span class="token punctuation">(</span><span class="token string">'HI, rubick'</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span>
</code></pre></div><p>rubick 更多支持 API 能力参考:<a href="https://github.com/rubickCenter/rubick/blob/master/static/preload.js#L49" target="_blank" rel="noopener noreferrer">rubick 全局API<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p> <h3 id="测试写好的插件"><a href="#测试写好的插件" class="header-anchor">#</a> 测试写好的插件</h3> <p>由于 <code>rubick</code> 插件是基于 <code>npm</code> 的管理方式,所以开发者调试插件,也是基于 <code>npm</code> 的软连接的方式进行调试。
首先需要再插件 <code>package.json</code> 目录下执行:</p> <div class="language-shell extra-class"><pre class="language-shell"><code>$ <span class="token function">npm</span> <span class="token function">link</span>
</code></pre></div><p>然后将插件通过插件市场的 <code>开发者</code> 菜单进行安装,填写插件的 <code>name</code> 即可,如果插件需要调试,可以通过右上角 ... 来打开开发者工具进行调试,页面变更直接刷新即可:</p> <p><img src="https://pica.zhimg.com/80/v2-d7d6d5cba1151527aeff8e2c9b8cefb4_720w.gif" alt=""></p> <p>本小节所有代码:<a href="https://gitee.com/rubick-center/rubick-ui-plugin-demo" target="_blank" rel="noopener noreferrer">rubick-ui-plugin-demo<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p> <h2 id="开发系统插件"><a href="#开发系统插件" class="header-anchor">#</a> 开发系统插件</h2> <p>一个最基础插件的目录是这样的:</p> <div class="language- extra-class"><pre class="language-text"><code>rubick-system-plugin-demo
|-- package.json
|-- index.js
</code></pre></div><h3 id="文件说明-2"><a href="#文件说明-2" class="header-anchor">#</a> 文件说明</h3> <h4 id="package-json-2"><a href="#package-json-2" class="header-anchor">#</a> package.json</h4> <p>用于指定插件最基础的配置,一个最基础的配置信息如下:</p> <div class="language-json extra-class"><pre class="language-json"><code><span class="token punctuation">{</span>
<span class="token property">&quot;name&quot;</span><span class="token operator">:</span> <span class="token string">&quot;rubick-system-plugin-demo&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;pluginName&quot;</span><span class="token operator">:</span> <span class="token string">&quot;rubick 系统插件demo&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;version&quot;</span><span class="token operator">:</span> <span class="token string">&quot;0.0.0&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;description&quot;</span><span class="token operator">:</span> <span class="token string">&quot;rubick 系统插件demo&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;entry&quot;</span><span class="token operator">:</span> <span class="token string">&quot;index.js&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;logo&quot;</span><span class="token operator">:</span> <span class="token string">&quot;https://xxxx/upload/202112/08/5bac90649c5343cabb63930b131cf8e6.png&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;pluginType&quot;</span><span class="token operator">:</span> <span class="token string">&quot;system&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;author&quot;</span><span class="token operator">:</span> <span class="token string">&quot;muwoo&quot;</span><span class="token punctuation">,</span>
<span class="token property">&quot;homepage&quot;</span><span class="token operator">:</span> <span class="token string">&quot;&quot;</span>
<span class="token punctuation">}</span>
</code></pre></div><p>核心字段说明:</p> <ul><li>name 插件 <code>npm</code> 包名称,<span class="badge tip" style="vertical-align:top;" data-v-15b7b770>必填</span></li> <li>pluginName 插件显示名称,用于展示给使用者 <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>必填</span></li> <li>description 插件描述,描述这个插件的作用 <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>必填</span></li> <li>author 插件作者</li> <li>entry 入口文件,一般为 <code>index.js</code></li> <li>logo 尺寸建议 200 * 200, 插件的 logo, 需要是 http/https 在线地址不支持本地logo <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>必填</span></li> <li>version 插件的版本 <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>必填</span></li> <li>homePage: 插件 readme raw 地址</li> <li>pluginType: 插件类型枚举ui, system. 当前选 system <span class="badge tip" style="vertical-align:top;" data-v-15b7b770>必填</span></li></ul> <h4 id="index-js"><a href="#index-js" class="header-anchor">#</a> index.js</h4> <p>插件的入口文件,用于 rubick 主进程进行加载执行:</p> <div class="language-js extra-class"><pre class="language-js"><code>module<span class="token punctuation">.</span><span class="token function-variable function">exports</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=&gt;</span> <span class="token punctuation">{</span>
<span class="token keyword">return</span> <span class="token punctuation">{</span>
<span class="token function">onReady</span><span class="token punctuation">(</span><span class="token parameter">ctx</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">const</span> <span class="token punctuation">{</span> Notification <span class="token punctuation">}</span> <span class="token operator">=</span> ctx<span class="token punctuation">;</span>
<span class="token keyword">new</span> <span class="token class-name">Notification</span><span class="token punctuation">(</span><span class="token punctuation">{</span>
<span class="token literal-property property">title</span><span class="token operator">:</span> <span class="token string">&quot;测试系统插件&quot;</span><span class="token punctuation">,</span>
<span class="token literal-property property">body</span><span class="token operator">:</span> <span class="token string">&quot;这是一个系统插件在rubick运行时立即被加载&quot;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">show</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre></div><p><code>index.js</code> 需要返回一个包含 <code>onReady</code> 生命周期的函数,该函数接受 <code>ctx</code> 对象作为参数,我们可以通过 <code>ctx</code> 使用 <code>electron</code> 主进程所有能力。
同时也为 <code>ctx</code> 上扩展挂在了 <code>mainWindow</code> 对象。</p> <h4 id="调试插件"><a href="#调试插件" class="header-anchor">#</a> 调试插件</h4> <p>由于 <code>rubick</code> 插件是基于 <code>npm</code> 的管理方式,所以开发者调试插件,也是基于 <code>npm</code> 的软连接的方式进行调试。
首先需要再插件 <code>package.json</code> 目录下执行:</p> <div class="language-shell extra-class"><pre class="language-shell"><code>$ <span class="token function">npm</span> <span class="token function">link</span>
</code></pre></div><p>然后将插件通过插件市场的 <code>开发者</code> 菜单进行安装,填写插件的 <code>name</code> 即可。由于插件依赖于主进程启动执行,所以安装完成后需要重启 rubick 后才能生效。</p> <p><img src="https://pic3.zhimg.com/80/v2-e218500a0686a8735d80f417aa53b7aa_720w.gif" alt=""></p> <div class="custom-block danger"><p class="custom-block-title">DANGER</p> <p>系统插件目前无法直接通过 <code>devtools</code> 进行调试,后面会进行优化</p></div> <h2 id="发布插件"><a href="#发布插件" class="header-anchor">#</a> 发布插件</h2> <p>这里介绍完了如何开发插件,最后非常欢迎为 <code>rubick</code> 贡献开源插件,发布插件也非常简单,首先需要把自己的插件发布到 <code>npm</code> 仓库:</p> <div class="language-shell extra-class"><pre class="language-shell"><code>$ <span class="token function">npm</span> publish
</code></pre></div><p>然后再给 <a href="https://gitcode.net/rubickcenter/rubick-database/-/blob/master/plugins/total-plugins.json" target="_blank" rel="noopener noreferrer">rubick-database/plugins/total-plugins.json<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> 仓库提个 <code>pull request</code>, 把你的 <code>package.json</code> 信息加入 <code>json</code> 文件内,等我们 merge 了您的提交,插件将会自动上架。</p></div> <footer class="page-edit"><div class="edit-link"><a href="https://github.com/rubickCenter/rubick/edit/master/dev/README.md" target="_blank" rel="noopener noreferrer">帮助我们改善此页面!</a> <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></div> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
<a href="/rubick/guide/" class="prev">
使用文档
</a></span> <span class="next"><a href="/rubick/super/">
特殊服务
</a>
</span></p></div> </main></div><div class="global-ui"></div></div>
<script src="/rubick/assets/js/app.802a86ab.js" defer></script><script src="/rubick/assets/js/2.733019b2.js" defer></script><script src="/rubick/assets/js/9.3b2c34da.js" defer></script><script src="/rubick/assets/js/3.64801815.js" defer></script>
</body>
</html>