上一篇文章记录了如何自定义插件,而这样编写完的插件只能自己使用,想共享到Internet或者用到用到别项目就比较麻烦,这是我们需要把代码做成插件形式,然后发布到网上,现在cordova插件都转移到流行的npm上了,所以我们就可以通过npm发布cordova插件。
通过npm发布cordova插件其实是在发布普通npm插件基础上做了一些修改而已。所以可以先看看npm的官方教学视频,其实11、12两节基本说了整个过程,不过视频是个语速很快的外国妹子说的。。。
1、创建npm mudule
首先保证电脑里装了npm,讲道理,开发cordova肯定是有这个环境的。然后就是在命令行下,选择一个文件夹,名字为你之后插件的名字如:cordova-plugin-mjtest,然后就输入
npm init
然后会让你输入一系列信息,就像:
这些就是对于项目的基本描述,但是这个描述还缺少几个属性,我们在后面补全。
2、补全package.json
{
"name": "cordova-plugin-mjtest",
"version": "1.1.2",
"description": "test cordova plugin",
"cordova": {
"id": "cordova-plugin-mjtest",
"platforms": [
"android",
"ios"
]
},
"repository": {
"type": "git",
"url": "https://github.com/MaxBalance/cordova-plugin-mjtest.git"
},
"keywords": [
"ecosystem:cordova",
"cordova",
"mjtest",
"cordova-ios",
"cordova-android"
],
"author": "maxbalance",
"license": "Apache 2.0",
"bugs": {
"url": "https://github.com/MaxBalance/cordova-plugin-mjtest/issues"
},
"homepage": "https://github.com/MaxBalance/cordova-plugin-mjtest#readme"
}
这是我最后上传的package.json,里面有的cordova中,”id”: “cordova-plugin-mjtest”是定义插件的id,然后是你编写cordova插件的平台,我这里只有ios与android。同样的在keywords中也最好是按照这样的格式,以便被人可以搜索到,当然你可以增加更多的keywords。其他的属性就没有什么特别的。
3、制作cordova插件
上一篇中制作的插件,有些文件我们是可以直接使用的,比如java中的java文件,ios下的.h与.m文件和通信的js文件。
在刚才我们init的文件夹下,建立src与www文件夹,其中src下创建ios和android文件夹,把之前的java文件与.m和.h文件放入到对应文件夹下。
我这取名为mjtest.java,mjtest.h,mjtest.m。
接下来就是编写plugin.xml,这个是通信的关键。
<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
xmlns:rim="http://www.blackberry.com/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
id="cordova-plugin-mjtest"
version="1.1.2">
<name>mjtest</name>
<description>Cordova mjtest Plugin</description>
<license>Apache 2.0</license>
<keywords>cordova,mjtest,cordova-ios,cordova-android</keywords>
<repo>https://github.com/MaxBalance/cordova-plugin-mjtest.git</repo>
<issue>https://github.com/MaxBalance/cordova-plugin-mjtest/issues</issue>
<js-module src="www/mjtest.js" name="mjtest">
<clobbers target="window.plugins.mjtest" />
</js-module>
<!-- android -->
<platform name="android">
<config-file target="res/xml/config.xml" parent="/*">
<feature name="Mjtest" >
<param name="android-package" value="org.apache.cordova.mjtest.Mjtest"/>
</feature>
</config-file>
<source-file src="src/android/Mjtest.java" target-dir="src/org/apache/cordova/mjtest" />
</platform>
<!-- ios -->
<platform name="ios">
<config-file target="config.xml" parent="/*">
<feature name="Mjtest">
<param name="ios-package" value="Mjtest"/>
</feature>
</config-file>
<header-file src="src/ios/Mjtest.h" />
<source-file src="src/ios/Mjtest.m" />
</platform>
</plugin>
这个文件我是纯手动创建,如果有自动方法,求指导~
其中的配置关键是把文件名字和路径配置正确。有一处android下的target-dir是全路径,也就是最后下载你的插件后,文件所在的位置。
4、发布npm插件
到此我们的编码工作已经基本结束了,之后就是发布了。发布前需要修改package.json中的version,如果是1.0.0是不允许发布的,修改为更高版本即可。
然后在发布前还需要在npm官网注册你的账户,然后通过
npm adduser
来添加本地用户,需要用户名、密码与邮箱。
npm publish
在文件夹中加入license与readme等,使用这个命令去上传即可。
命令行出现,你的“项目名@版本号”,说明上传成功,过会去cordova plugin页面搜索即可。
祝大家成功~