插件开发指南
icejs 基于工程构建工具 build-scripts 封装,因此在插件能力上也完整继承了 build-scripts。除了通过插件定制工程能力以外,icejs 还为插件扩展了运行时定制的能力,这让插件拥有更多的想象空间。插件机制是 icejs 的核心之一,当前 icejs 的基础能力都是通过插件来实现。插件机制不但可以保证框架核心足够精简和稳定,还可以通过插件对运行时和编译时的能力进行封装复用,最终打造一个完整的生态。
#
快速开始使用 CLI 初始化插件:
#
插件目录通常情况下,插件通过 npm 包的形式分发,插件初始化目录如下:
这里以 ts 为例,实际上也可以通过 js 编写插件。 ts 最终应编译为 js 以发布 npm 包。插件核心有两个文件:
index.ts
:通常用于做一些工程相关的事情,比如更改 Webpack 配置、构建结束后执行一些其他任务等,需保证该文件作为 npm 包入口。runtime.ts
:实现一些运行时能力,比如 config/request 插件。注意: 旧版本的module.ts
暂时兼容,但在未来不受支持。需保证该文件与index.ts
位于同一目录下。
下面也会按照这两个维度来分别介绍。
#
工程能力定制工程能力以 index.ts
为入口,在执行 start/build 时 icejs 会加载并执行每个插件的 index.js
。
关于 index.ts
应该如何书写请参考下一个章节的文档 通过插件定制工程能力。
#
运行时能力定制运行时能力以 runtime.ts
为入口,通过浏览器打开页面时会执行 src/app.ts
中的 runApp()
方法,这个方法会加载并执行所有插件的 runtime.ts
。
关于 runtime.ts
应该如何书写请参考下一个章节的文档 通过插件定制运行时能力。
#
单元测试使用 Jest 进行单元测试。
#
插件开发示例以 plugin-logger
为例。该插件采用 typescript 编写,对工程能力及运行时能力均进行了修改。为框架提供了日志功能。
目录结构:
#
类型和扩展类型声明:
扩展 appConfig 类型
#
工程化能力实现logger 功能实现
导出至 ice