cloudbase-apptpl
v1.0.0-alpha.0
Published
cloudbase app template
Downloads
2
Readme
Cloudbase-apptpl
cloudbase项目模板基类,用于自定义create-cloudbase-app的项目模板。
安装
# npm
npm i cloudbase-apptpl -D
# yarn
yarn add cloudbase-apptpl -D
API
CloudBaseApp
abstract class CloudBaseApp {
protected _appname;
protected _lang;
protected _options;
constructor(appname: string, lang: LANGUAGES, options?: KV<any>);
abstract run(): any;
protected _installDeps(path: string, packageTool: string, dependencies: string[]): void;
}
CloudBaseApp
是一个抽象类,子类必须实现抽象方法run()
。App实例化之后会自动调用run()
方法;CloudBaseApp
类提供安装依赖的工具方法_installDeps
;protected
类型的属性和方法可在子类中直接访问。
renderTpl()
工具函数,将ejs模板文件渲染并写入目标文件
function renderTpl(filePath: string, targetPath: string, locals?: KV<any>): void;
validPattern()
此函数用来验证pattern
的合法性,一般用于调试。
function validPattern(pattern: string): boolean;
pattern
是匹配依赖的协议字符串,格式如下
<pre>|<content>
pre
指的是工具类模块,比如webpack、rollup等。这类模块与content
包含的功能模块通常有综合依赖关系,比如webpack与less搭配额外依赖less-loader
。content
指的是项目依赖的第三方模块,比如vue
、vue-router
等等。pre
和content
的格式一致,如下:
pre1&pre2|content1&content2
matchDeps()
工具函数,在depsMap中匹配pattern的依赖模块,以数组的形式返回。
function matchDeps(pattern: string, depsMap: DepsMap): string[];
LANGUAGES-自定义类型
可选语言
enum LANGUAGES {
ZH = "zh",
EN = "en"
}
DepsMap-自定义类型
必须包含common值。
type DepsMap = KV<string[]> & {
common: string[];
};
示例
import CloudBaseApp,{LANGUAGES,renderTpl} from 'cloudbase-apptpl';
class VanillaApp extends CloudBaseApp{
constructor(appname,lang,options){
super(appname,lang,options);
// ...
}
/**
* 实现抽象方法run
*/
run(){
// ...
// 调用父类方法
this._installDeps('./myapp','yarn',['vuex','vue']);
}
}