通过上面的介绍,读者基本已经了解了 Pipcook 主要的使用场景了,对,那就是 —— Pipeline,但要说到 Pipeline 却离不开插件,我们为 Pipcook 的 Pipeline 生态构建了一套开放的插件机制,通过这套机制,任何开发者都可以随时随地基于 Node.js 为 Pipcook 拓展插件。
首先,一个插件,也是一个 NPM 包,在 NPM 包的基础上,Pipcook 增加了一些拓展字段,即在 package.json 中增加了一些额外的定义,下面就是一个简单的定义:
{
"name": "my-own-pipcook-plugin",
"version": "1.0.0",
"description": "my own pipcook plugin",
"dependencies": {
"@pipcook/pipcook-core": "^0.5.0"
},
"pipcook": {
"category": "dataCollect",
"datatype": "image"
},
"conda": {
"python": "3.7",
"dependencies": {
"tensorflow": "2.2.0"
}
}
}
首先,每个插件都必须依赖 @pipcook/pipcook-core,它包含了实际定义插件所依赖的类型定义和一些工具函数。然后是 “pipcook” 节点,它定义了插件的基本信息,比如类别和数据类型,它用于 Pipcook 对插件本身做归类和整理,接下来就是 “conda” 节点(可选),如果插件依赖 Python 环境,那么开发者可以通过这个字段配置 Python 的依赖,比如上述就表示插件依赖 Python 版 tensorflow@2.2.0,在 Pipcook 安装插件时就会自动进行安装。
定义好这些基本信息后,就可以开始写具体的插件代码了,还记得前面在说明 Pipeline 流程时的那张图吗?每一种插件类型的写法都是不一样的,比如一个简单的 data collect 插件如下: