<commit_before><commit_msg>add plugin README<commit_after># 插件发布

通过weexpack体系下命令可以方便开发者创建插件发布模板，配置完成模板之后即可发布，详细介绍如下。


**以下通过weex-test举例说明**
## 插件创建

通过如下命令创建发布模板

weexpack plugin create

举例：`weexpack plugin create weex-test`

目录结构


	├── LICENSE
	├── README.md
	├── RELEASENOTES.md
	├── android
	├── ios
	├── js
	├── package.json
	├── plugin.xml
	└── web

* 各自平台目录

	android/ios/js/web目录放置对应平台的源码，开发者把开发完成的weex插件，copy源码到对应目录即可


* plugin.xml文件配置

	plugin.xml定义了插件的详细配置与依赖

	**plugin**

	Attributes | Description
	----|-----
	id(string) |   即将发布的插件标识，用于插件安装时使用
	version(string) | 即将发布的插件版本号
	name(string) | 即将发布的插件名字，默认与id一致
	description(string) | 即将发布的插件描述
	
	举例:
	
	```
	<plugin xmlns="http://www.w3.org/ns/widgets"
    id="weex-test"
    version="0.1.0">
    <name>weex-test</name>
    <description></description>
	```
		
	**dependency**
	
	Attributes | Description
	----|-----
	id(string) |   依赖的插件标识，用于插件安装时使用
	url(string) | 依赖的插件git地址
	version(string) | 依赖的插件版本号，默认获取最新版本
	
	举例：
	
	```
	<dependency id="weex-gcanvas" version="^0.1.0" />
	```
	
	**platform**
	
	Attributes | Description
	----|-----
	name(string) |   平台名称
	
	举例:
	
	```
	<platform name="ios">
  		<!-- ios-specific elements -->
	</platform>
	```
	
	**source-file**
	
	Attributes | Description
	----|-----
	src(string) |   源码实现文件的路径
	
	举例：
	
	```
	<!-- android -->
	<source-file src="" target-dir="" />
	<!-- ios -->
	<source-file src="ios/WXTest.m" />
	```
	
	**header-file**
	
	Attributes | Description
	----|-----
	src(string) |   源码头文件的路径
	
	举例：
	
	```
	<!-- ios -->
	<header-file src="ios/WXTest.h" />
	```
	
	**framework**
	
	Attributes | Description
	----|-----
	src(string) |   插件依赖的系统framework，如果custom为ture，value是framework路径
	custom(boolean) | 标识引用的framework是否是第三方库
	type(string) | 标识framework的来源
	
	举例：
	
	```
	<!-- ios -->
	<framework src="Foundation.framework" />
	<framework src="relative/path/to/my.framework" custom="true" />
    <framework src="SDWebImage" type="podspec" spec="" />
    <!-- android -->
	```
	
	**config-file**
	
	Attributes | Description
	----|-----
	target(string) | 即将要修改的iOS/Android工程配置文件
	parent(string) | 指定在哪个父节点插入内容。指定工程配置文件的父元素，会在指定的父元素下添加config-file下所有的内容，可以使用通配符/*，标识在根元素下插入。如果target是Plist文件，指定在Plsit文件中哪个节点下插入内容，授权文件都添加在plist文件。
	
	举例：
	
	```
	<!-- ios -->
	<config-file target="config.xml" parent="/*">
    </config-file>
    <config-file target="*-Info.plist" parent="NSCameraUsageDescription">
	</config-file>
	
	<!-- android -->
	```
	
	**feature**
	
	Attributes | Description
	----|-----
	name(string) | 添加到工程配置文件的插件名称
	
	* param  
		
		 param描述WeexSDK注册插件的信息
		 
		Attributes | Description
		----|-----
		name(string) | category为注册的插件类别（module/component/handle）；ios-package为WeexSDK待注册的类名称；api为js业务调用的组件名称
		value(string) | name为category时，iOS分为三类（module/component/handle）；name为ios-packag时，值为weexSDK待注册的类名称；name为api时，值为js业务调用的组件名称
		
		
		举例：
	
		```
		<!-- ios -->
		<config-file target="WeexpluginConfig.xml" parent="/*">
			<feature name="WXTestModule">
        		<param name="category" value="module" />
	        	<param name="ios-package" value="WXTestModule" />
    	    	<param name="api" value="test" />
        	</feature>
	    </config-file>
	    
	    <!-- android -->
		```
	
	**preference**
	
	preference字段可以为其他标签定义变量，其他所有标签都可直接使用此变量
	
	Attributes | Description
	----|-----
	name(string) | 变量名称
	default(string)	| 默认值,可为空
		
	举例：
	
	```
	<preference name="CAMERA_USAGE_DESCRIPTION" default=" " />
    <config-file target="*-Info.plist" parent="NSCameraUsageDescription">		<string>$CAMERA_USAGE_DESCRIPTION</string>
	</config-file>
	```
	

## 插件发布

weexpack plugin publish

举例：cd到`weex-test`目录下执行`weexpack plugin publish`即可发布。
{'fraction_non_alphanumeric': 0.18584312653730528, 'fraction_numerical': 0.0019130910084722602, 'mean_word_length': 3.29073856975381, 'pattern_counts': {'":': 0, '<': 43, '<?xml version=': 0, '>': 43, 'https://': 0, 'lorem ipsum': 0, 'www.': 1, 'xml': 6}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2798160', 'n_tokens_mistral': 1800, 'n_tokens_neox': 1818, 'n_words': 197}