插件基础抽象类(Plugin) #
插件实例基础抽象类,封装常用的脚手架插件开发相关功能,插件需要继承该抽象类以实现插件功能(其中 abtract 方法和属性为子插件必须实现的),插件实例通过脚手架框架内部自动创建,插件开发者无需手动初始化插件实例,插件实例和方法在子插件种皆可通过 this 获取。
new Plugin(params) #
插件构造函数为脚手架框架内部调用,插件开发者无需创建插件实例
- params:
- entryPath: <string> 插件入口路径
this.entryPath #
- Type: <string> 插件入口路径
this.templatePath #
- Type: <string> 插件模版路径
this.actionPath #
- Type: <string> action 文件夹路径
this.prompt(questions) #
实现命令行可交互问答,对 inquirer 核心功能封装
- questions: <Object[]> 问题数组
- type: <checkbox|text> 问题类型
- name: <string> 问题键名
- message: <string> 问题描述
- choices: <Object[]> 问题可选项
- name: <string> 选项名称
- value: <string> 选项值
this.install(options) #
在上下文目录执行 pnpm install 进行包安装
- options: <Object> 调用选项
this.addDependencies(packageNames, options) #
在上下文目录批量添加依赖包
- packageNames: <string[]> 依赖包名称数组(如:axios@1.0.0)
this.addDevDependencies(packageNames, options) #
在上下文目录批量添加开发依赖包
- packageNames: <string[]> 依赖包名称数组(如:axios@1.0.0)
this.removeDependencies(packageNames, options) #
在上下文目录批量删除依赖包
- packageNames: <string[]> 依赖包名称数组(如:axios@1.0.0)
this.removeDevDependencies(packageNames, options) #
在上下文目录批量删除开发依赖包
- packageNames: <string[]> 依赖包名称数组(如:axios@1.0.0)
this.getPackageJson(fromPath = this.entryPath) #
从 fromPath 开始查找 package.json 文件直到根目录,并返回 json 对象
- fromPath: <string> 查找起始路径
this.addPackageJsonFields(fieldsData, filePath) #
向 package.json 添加字段
- fieldsData: <Object> 字段数据对象
- filePath: <string> package.json 文件路径
this.savePackageJson(filePath, packageJson) #
保存 packageJson 对象到 package.json 文件
- filePath: <string> package.json 文件路径
- packageJson: <Object> packageJson 数据对象
this.getPackageName(fromPath = this.entryPath) #
获取指定路径的 npm 包名称
- fromPath: <string> 查找起始路径
this.getPluginName(frompath = this.entryPath) #
获取指定路径的 inventor-plugin 名称,即命令行执行名称
- fromPath: <string> 查找起始路径
this.confirmOverwrites(paths) #
询问是否覆盖指定路径的文件
- paths: <string[]> 文件路径列表
this.renderTemplate(templateName, destinationName, options) #
渲染指定模版文件夹到目标文件夹
- templateName: <string> 模版名称(即在 templates 的子文件夹名称)
- destinationName: <string> 目标文件夹名称
- options: <Object> 模版渲染选项
- data: <Object> 模版数据
- overwrites: <Boolean> 是否覆盖已存在目标文件
this.renderTemplateFile(templateName, templateFile, destinationFile, options) #
渲染指定模版文件到目标文件
- templateName: <string> 模版名称(即在 templates 的子文件夹名称)
- templateFile: <string> 模版目录下的文件,相对模版路径
- destinationFile: <string> 目标文件名称
- options: <Object> 模版渲染选项
- data: <Object> 模版数据
- overwrites: <Boolean> 是否覆盖已存在目标文件