基于Cordova创建Ionic插件
-
克隆Github中的Ionic-Native的项目到本地,后面命令的执行和插件文件模版的生成需要依赖此环境。
-
进入ionic-native的根目录
-
创建插件包
// 调用此命令,并将`PluginName`替换为希望添加的插件名称 // 第一个字母一定要大写,使用大驼峰命名 gulp plugin:create -n PluginName执行完以上命令将会在src/@ionic-native/plugins目录下创建一个名称为PluginName的插件目录,里面有一个index.ts文件,后面Ionic插件的编写就是需要在这个文件中进行的。
-
编写index.ts
@Plugin({ pluginName: 'ZijinUtilPlugin', plugin: 'cordova-plugin-x-zijinutil', // npm package name, example: cordova-plugin-camera pluginRef: 'cordova.plugins.ZijinUtil', // the variable reference to call the plugin, example: navigator.geolocation platforms: ['Android'] // Array of platforms supported, example: ['Android', 'iOS'] }) @Injectable() export class ZijinUtilPlugin extends IonicNativePlugin { }
这里需要重点指出的是 @Plugin装饰器中参数的添加:
-
pluginRef:指的是底层Cordova插件的应用方式,这个值和cordova插件中的plugin.xml下的clobbers节点值相同。
-
plugin:值的是npm包的名称
-
通过调用 npm run build
来完成对插件的编辑,最后编译的结果会生成到ionic-native/dist/@ionic-native/plugins目录。如果是使用的是MacOS系统进行的编译还有可能会出现如下的错误: Error: ENOENT: no such file or directory, open '/Users/wangke/Workspace/CompanyProjects/ionic-native/dist/@ionic-native/plugins/.DS_Store/index.js'。通过执行 find . -name '.DS_Store' -type f -delete 命令后即可解决上述问题。