插件开发约定
rollup插件实际上就是返回一个对象,下面是rollup插件的约定:
- 插件前缀应该为
rollup-plugin-
- 尽可能使用异步方法
- 用英语记录插件
- 如果您的插件使用“虚拟模块”(例如用于辅助函数),请在模块 ID 前加上\0. 这可以防止其他插件尝试处理它。
- 中包含rollup-plugin关键字package.json。
- 如果合适,请确保您的插件输出正确的源映射。
插件的属性值
rollup的插件属性就只用一个: name (string类型)是插件的名称 用于报错的显示插件的hooks
分为build hooks和output generation hooks两种.分别为构建和生产时的各个阶段调用的函数build hooks
官方解释:build hooks是在构建阶段运行,我理解就是当rollup.rollup(inputOptions)时运行,这些hooks主要作用就是在处理之前定位,提供和转换输入文件。钩子可以影响构建的运行方式,有不同种类的hooks(以下用钩子来替代hooks了):
- async : 异步钩子,此类型的hooks需要返回一个promise resolve的值。否则会被标记成sync类型
- sync : 同步钩子
- first : 当插件执行此类型钩子时,此钩子一直会顺序的执行,直到返回一个null或者undefind
- sequential : 这个类型钩子会按指定顺序运行,如果其中某个钩子是异步的,之后的钩子会等当前钩子解析后再执行
- parallel:这种类型的钩子和上面的sequential类型一样,不通点在与如果顺序执行时某个钩子时异步的,后续钩子不需等待,可以并行执行。
Output Generation Hooks
第一个插件demo
export default function removeConsole() {
return {
name:"remove-console",
transform(code,id) {
const reg = /console\.log\(.*\)/ig;
return code.replace(reg,"");
}
}
}