From 8aa56e7d1e543573fd8bd70fd79661fc7346389a Mon Sep 17 00:00:00 2001 From: DCloud_Heavensoft Date: Fri, 28 Apr 2023 04:26:22 +0800 Subject: [PATCH] Update publish.md --- docs/plugin/publish.md | 74 ++++++++++++++++++++++++++++++------------ 1 file changed, 53 insertions(+), 21 deletions(-) diff --git a/docs/plugin/publish.md b/docs/plugin/publish.md index 6b5295831..212cc19ac 100644 --- a/docs/plugin/publish.md +++ b/docs/plugin/publish.md @@ -1,25 +1,40 @@ -DCloud有活跃的插件市场,[https://ext.dcloud.net.cn/](https://ext.dcloud.net.cn/),并提供了变现、评价等机制。 -欢迎开发者为插件市场提供插件。 -很多优秀的插件作者,可以做到每月销售数万元的插件。(只有uniCloud插件和原生插件支持付费,其他类型插件不能设价格) +# 插件作者发布插件 + +DCloud有活跃的插件市场,[https://ext.dcloud.net.cn/](https://ext.dcloud.net.cn/),并提供了计价销售、广告解锁、赞助、评价等机制。 + +## 为什么提交插件 + +- 写出通用的功能模块时,可以分享给其他有相同需求的人。人人贡献、人人受益。 +- 通过赞赏、广告分成、计费销售,收获物质回报。 +- 通过插件下载量、评星、排行,收获荣誉。 + +很多优秀的插件作者,可以做到每月销售数万元的插件。(只有uniCloud插件和App原生或uts插件支持付费,其他类型插件不能设价格) + +## 插件制作注意 + +uni插件其实是uni-app项目下一部分代码,但提交时注意: -插件作者制作插件时,需注意以下几点: -- 前端建议使用scss预处理并引用[uni.scss](https://github.com/dcloudio/uni-ui/blob/master/uni.scss)中的变量定义,保持各插件风格统一,方便插件使用者通过搭积木的方式开发整体风格一致的App - 遵循插件目录规范,其中比较重要的是确定插件ID,详细解释下方。 -- 插件包中不需要包含 unpackage 目录 +- 插件包中不应该包含 unpackage 目录,最好也不包含 node_modules 目录。 - 插件包中不应该包含版本控制相关文件和目录,如 .git,.svn 等。 +- 前端建议使用scss预处理并引用[uni.scss](https://github.com/dcloudio/uni-ui/blob/master/uni.scss)中的变量定义,保持各插件风格统一,方便插件使用者通过搭积木的方式开发整体风格一致的App -插件ID(原“插件使用名称”)命名规范: -1. 格式为:'作者ID-插件名称',示例:'xiaoming-tag',其中作者ID和插件名称只能包含英文、数字 +插件ID命名规范: +1. 格式为:'作者ID-插件英文名称',示例:'xiaoming-abc',其中作者ID和插件名称只能包含英文、数字 2. 作者ID由插件作者自定义,不能使用'DCloud'、'uni'等关键字,长度要求至少2位字符 -3. 插件名称需直观表达插件的作用,例如:tag、button等 +3. 插件名称需直观表达插件的作用,例如:eshop、button等 从HBuilderX 3.1起,新增 `uni_modules`,它是uni生态的重要模块化方案。详情另见:[https://uniapp.dcloud.net.cn/uni_modules](https://uniapp.dcloud.net.cn/uni_modules) -插件市场分多种插件: +自`uni_modules`发布后,建议插件作者首先在自己的项目下建一个`uni_modules`,在本地开发调试没问题后,对`uni_modules`下你的插件目录点右键,提交发布到插件市场。 + +插件市场分多种插件,分类介绍如下: ## 前端组件 +前端组件指uni-app前端使用vue/nvue/wxml等技术开发的、用于页面内嵌的组件。它又进一步细分为vue组件、nvue组件、小程序自定义组件。这个分类不包含uts原生组件。 + 我们以小明开发的tag组件(插件ID为:xiaoming-tag)为例,上传插件市场时,目录结构要求如下: ![](http://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/ext-dev-01.png) @@ -33,7 +48,7 @@ DCloud有活跃的插件市场,[https://ext.dcloud.net.cn/](https://ext.dcloud Tips: - 通用组件、nvue组件、目录结构要求相同 - 小程序组件的一级目录,名字需从 components 变更为 wxcomponents ,其它结构要求相同 -- 不能包含根目录的 manifest.json、pages.json、App.vue、main.js 等文件 +- 组件不能包含根目录的 manifest.json、pages.json、App.vue、main.js 等文件 ## uni-app前端模板 @@ -46,7 +61,9 @@ Tips: 若页面模板依赖其它组件,则需将依赖组件一起打包;假设"xiaoming-setting"依赖小红开发的list组件(xiaohong-list),则发布"xiaoming-setting"页面模板时,目录结构要求如下: ![](http://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/ext-dev-04.png) -HBuilderX 3.5.0+ 支持插件导入工程时,支持合并页面路由到项目的 pages.json。[详见](uni_modules.md?id=pages-init) +当然依赖管理,可以使用`uni_modules`,在你的`uni_modules`目录下的package.json中配置依赖另一个`uni_modules`,此时就不用再包含其他插件的源码,但这种做法无法锁定版本,会在使用者下载你的插件时自动安装最新的依赖。 + +如果你的页面,需要在下载时被注册到使用者的项目的pages.json中,从HBuilderX 3.5.0+ 插件导入工程时,支持合并页面路由到项目的 pages.json。[详见](uni_modules.md?id=pages-init) Tips: - vue 页面模板和 nvue 页面模板目录结构要求相同。 @@ -58,7 +75,7 @@ Tips: Tips: - 项目模板打包时不需要包含 `unpackage` 目录; - 项目模板打包时需要包含 manifest.json 文件。manifest.json 里不允许有 appid,包括 DCloud appid 或微信等三方 appid; -- 如果模板中包含 uniCloud 相关的云函数目录,如 cloudfunctions-aliyun、cloudfunctions-tcb,请选择“uniCloud”->“前后一体项目模板”。如果不使用云函数功能,则应该从插件包中删除 cloudfunctions 相关目录。 +- 如果模板中包含 uniCloud 相关的云函数目录,如 uniCloud-aliyun、uniCloud-tcb,请选择“uniCloud”->“前后一体项目模板”。如果不使用云函数功能,则应该从插件包中删除 uniCloud 相关目录。 ## JS SDK @@ -67,6 +84,8 @@ Tips: Tips: - 不能包含根目录的 manifest.json、pages.json、App.vue、main.js 等文件 +如果是非`uni_modules`的js sdk,使用者下载后会被下载到使用者项目根目录下的`js_sdk`目录 + ## UTS插件@uts uts插件开发详见[插件开发文档](https://uniapp.dcloud.net.cn/plugin/uts-plugin.html),这里主要说明uts付费插件发布的注意事项。 @@ -79,25 +98,38 @@ uts付费插件分为`普通授权版`及`源码授权版`,两种付费方式 如果插件用户购买了`普通授权版`,也看不到这些加密文件的源码,提交云打包时,会在云端验证并解密文件进行打包。 -如果插件作者上传插件时,同时提供了源码授权版,且插件使用者购买了源码授权版,才能拿到插件的所有源码。 +如果插件作者上传插件时,设置了提供源码授权版,且插件使用者购买了源码授权版,才能下载到插件的源码。 -若插件作者提供了源码授权版,需及时注意合同待签通知。当意向买方在电子合同签名后,DCloud会短信通知插件作者,提醒插件作者也对该电子合同进行签名。 +不管是`普通授权版`还是`源码授权版`,都是绑定唯一的appid和包名。如购买者更换了这2个信息中的一个,需要重新购买授权。 Tips: -- uts加密插件只支持传统打包,打包最低需要HBuilderX 3.7.2或以上版本 +- uts加密插件只支持云端传统打包,不支持离线打包、也不支持安心打包。打包最低需要HBuilderX 3.7.2+ +- 一般提交的uts插件仅包含uts源码,不建议包含三方sdk,如jar,这些应该配成仓储。 + +### uts插件和App原生语言插件的区别@utsdiff +uts插件和App原生插件在功能上是重叠的,都是原生扩展uni-app的能力。 +从uts插件发布后,DCloud建议插件作者开发uts插件,替代老的原生插件。 +它们之间有如下具体差别: +- uts开发和使用更加简单、清晰、小巧 +- uts插件更新免审核,无需等待DCloud管理员审核上架 +- uts插件天然支持多版本,插件作者更新后,使用者可以不更新,可以仍然使用之前下载到本地的老版插件 +- uts插件支持源码版计费,可以卖更高的价格,相关版权由DCloud进行保护,防止盗版和侵权。并且很多使用者确实有源码需求,担心三方SDK有不可控的代码。 -## 原生SDK -原生SDK,即uni原生插件,需使用Andorid/iOS原生环境开发实现,请参考以下教程: +## App原生语言插件 + +App原生语言插件,需使用Andorid/iOS原生环境开发实现,请参考以下教程: - [uni原生插件开发指南](https://nativesupport.dcloud.net.cn/NativePlugin/README) - [Android平台uni原生插件开发](http://nativesupport.dcloud.net.cn/NativePlugin/course/android) - [iOS平台uni原生插件开发](https://nativesupport.dcloud.net.cn/NativePlugin/course/ios) 压缩包格式要求:打开zip后根目录需为插件id目录,二级目录是ios、android子目录及package.json,详情参考[uni原生插件包格式](https://nativesupport.dcloud.net.cn/NativePlugin/course/package) +从uts插件发布后,DCloud建议插件作者开发uts插件,替代老的原生插件。原因[见上](#utsdiff) ## HBuilderX插件 + HBuilderX插件是安装在HBuilderX工具里的。是编辑器的插件,不是手机App的插件。详细开发教程见:[http://hx.dcloud.net.cn/](http://hx.dcloud.net.cn/) ## uniCloud @@ -146,7 +178,7 @@ encrypt数组中可灵活配置uniCloud/cloudfunctions下云函数及公共模 } ``` **目前只支持付费插件的js文件加密,vue及nvue文件无法加密,业务核心逻辑建议写到js中。** -**如果发布云端一体项目且包含uni_modules时,则不会加密uni_modules目录下的文件,uni_modules下应该做为独立插件发布,分别进行加密配置。** +**如果发布云端一体项目且包含`uni_modules`时,则不会加密`uni_modules`目录下的文件,`uni_modules`下应该做为独立插件发布,分别进行加密配置。** > 如果你的插件配置包含涉密信息,希望保护这些配置不被上传参考:[uni_modules插件上传辅助脚本示例](https://ext.dcloud.net.cn/plugin?id=5256) @@ -178,6 +210,6 @@ encrypt数组中可灵活配置uniCloud/cloudfunctions下云函数及公共模 ## 注意 - uni-app原生SDK及web项目两个分类下插件发布后需要审核才会生效。 -- 插件不能自行下架,如需下架请发邮件到service@dcloud.io。 +- 插件不能自行下架,如需下架请发邮件到service@dcloud.io。您也可以把插件标题改为“已废弃”,DCloud管理员会及时审核处理。 -**注意压缩包为标准zip格式,不要把rar等其他格式改名为zip** \ No newline at end of file +**如果是非uni_modules插件,那么自己压缩的压缩包注意为标准zip格式,不要使用非主流的压缩软件、不要把rar等其他格式文件的后缀名改名为zip** -- GitLab