fastchar-appjs
Version:
快速搭建VUE项目工具类的基本库,主要用于每个功能页面独立生成html,不使用vue单页面功能。
341 lines (340 loc) • 10.9 kB
TypeScript
/**
* 项目相关操作
* @author Janesen
*/
export declare class System {
/**
* 项目标题
*/
static projectTitle: string;
/**
* 项目的全局配置对象,将会自动注入到全局变量中
*/
static projectGlobalConfig: any;
/**
* 项目编辑的配置,只读 {@link BuildOption}
*/
static buildOption: any;
/**
* 获取默认的vue配置文件
* @param dirName 项目根目录,建议取值 {@link __dirname}
* @param options 更多选项配置 {@link BuildOption}
*/
static getDefaultVueConfig(dirName: string, options?: BuildOption): any;
/**
* 是否是 vue-cli-service build 命令构建模式
*/
static isVueCliServerBuild(): boolean;
/**
* 是否是 vue-cli-service server 命令构建模式
*/
static isVueCliServerServer(): boolean;
/**
* 是否是正式版本,production
*/
static isProduction(): boolean;
/**
* 是否的打包开发版本,development
*/
static isDevelopment(): boolean;
/**
* 是否的打包测试版本,test
*/
static isVueTest(): boolean;
/**
* 获取运行脚本 npm_lifecycle_script 里的参数值,例如:--model production 参数名:--model 参数值:production
* @param argument
*/
static getScriptArgumentValue(argument: string): string | null;
/**
* 获取命令参数 --src
*/
static getSrcPageDir(): string | null;
/**
* 获取命令参数 --out
*/
static getOutPageDir(): string | null;
/**
* 获取命令参数 --debug 的值
*/
static isServiceDebug(): boolean;
/**
* 获取打包支持的支付方式,避免ios上架失败,不允许支付宝支付等功能
*/
static getServicePay(): string[];
/**
* 设置全局变量值
* @param key 变量名
* @param data 变量值
*/
static setGlobalConfig(key: string, data: any): void;
/**
* 设置FastServer请求接口的全局默认参数
* @param data 参数对象
*/
static setFinalParams(data: any): void;
/**
* 彻底删除指定目录文件
* @param path
*/
static removeFile(path: any): void;
}
/**
* 页面相关操作
*/
export declare class Pages {
/**
* 获取vue页面配置,vue.config.js 中的pages配置
* @param dirName 项目的根目录
* @param options 更多配置
*/
static getBuildPages(dirName: string, options?: BuildOption): any;
/**
* 获取页面下config.json配置文件
* @param pagePath
* @param options
*/
static getPageConfig(pagePath: string, options: BuildOption): any;
/**
* 创建默认的index索引页面
* @param pagesValue
* @param dirName
* @param options
*/
static createIndexPage(pagesValue: string, dirName: string, options?: BuildOption): any;
/**
* 快速复制一个vue子页面开发
* @param dirName 项目根目录
* @param copyPageName 复制目标的文件夹名
* @param newPageName 新生成的文件夹名
* @param options
*/
static copyPage(dirName: string, copyPageName: string, newPageName: string, options?: BuildOption): void;
}
/**
* 全局注入脚本插件
*/
export declare class FastInjectJsPlugin {
private readonly options;
constructor(options: any);
filter(key: string, targetFilter: any): boolean;
injectArray(local: any, entry: any, targetInjectJsFiles: any): void;
injectObject(local: any, entry: any, targetInjectJsFiles: any): void;
apply(compiler: any): void;
}
/**
* 获取编译配置的选项配置,配置选项如下:
* <br/>
* {@link projectTitle } 项目名称
* <br/>
* {@link projectPagesDir } 项目存储页面的目录地址 默认:src/pages
* <br/>
* {@link projectOutDir } 项目默认编译输出地址 默认:dist
* <br/>
* {@link projectAssetsDir } 项目资源路径,默认:assets
* <br/>
* {@link pageTemplateFileDir } 页面的入口文件模板地址,默认:public/index.html
* <br/>
* {@link pageMainFileName }页面目录下的入口文件名,默认:index.js
* <br/>
* {@link pageConfigHtmlNamePrefix }页面生成html文件时文件命名携带的前缀
* <br/>
* {@link pageConfigFileName } 页面目录下的配置文件名,默认:config.json
* <br/>
* {@link autoCreatePageConfigFile } 是否在每个页面目录下自动创建config.json文件
* <br/>
* {@link autoCreateProjectIndexPage } 是否自动创建项目的index页面
* <br/>
* {@link nodeModulesDir } 第三方插件存放目录文件夹,默认:node_modules
* <br/>
* {@link globalConfig } 系统的全局配置
* <br/>
* {@link finalParams } FastServer请求接口全局请求参数,web项目的全局参数优先级大于原生APP的全局参数
* <br/>
* {@link injectJsFiles } 所有页面全局注入的js文件
* <br/>
* {@link injectJsFilter } 所有页面全局注入js文件过滤器
* <br/>
* {@link injectVariable } 所有页面全局注入js变量
* <br/>
* {@link cacheVueLoader } 是否使用vue默认的cache-loader,默认使用
* <br/>
* {@link vConsole } 开启vConsole插件的方式,默认:auto。可选值:auto(自动根据编辑的类型追加,server模式或debug模式开启),true(强制开启),false(不开启)
* <br/>
* {@link splitChunks } 将公共js代码,进行分割,默认:true
* <br/>
* {@link nativeMobileApp} 项目是否应用于创息公司的手机app,默认:true
* <br/>
* {@link buildLevel} 项目编译级别,与 标签 build-level 对应
* <br/>
* {@link buildLevelTagName} 项目编译级别标签名,默认: build-level
* <br/>
* {@link chainWebpack} 配置Webpack函数function (config){};
* <br/>
* {@link configureWebpack} 配置Webpack函数function (config){};
*/
export declare class BuildOption {
/**
* 合并options
* @param options
*/
static merge(...options: BuildOption[]): BuildOption;
/**
* 项目名称
*/
projectTitle: string;
/**
* 项目存储页面的目录地址,默认src/pages 或者数组:["默认src/pages","默认src/pages2"]
*/
projectPagesDir: any;
/**
* 项目编译输出地址,默认:dist
*/
projectOutDir: string;
/**
* 项目资源路径,默认:assets
*/
projectAssetsDir: string;
/**
* 页面的入口文件模板地址,默认:public/index.html
*/
pageTemplateFileDir: string;
/**
* 页面目录下的入口文件名,默认:index.js
*/
pageMainFileName: string;
/**
* 页面目录下的配置文件名,默认:config.json
*/
pageConfigFileName: string;
/**
* 页面目录下的渲染模板html,如果存在则以这个模板进行渲染,默认:index.html
*/
pageMainTemplateFileName: string;
/**
* 页面生成html文件时文件命名携带的前缀
*/
pageConfigHtmlNamePrefix: string;
/**
* 是否在每个页面目录下自动创建config.json文件
*/
autoCreatePageConfigFile: boolean;
/**
* 是否自动创建项目的index页面
*/
autoCreateProjectIndexPage: boolean;
/**
* 第三方插件存放目录文件夹,默认:node_modules
*/
nodeModulesDir: string;
/**
* vue挂载的目标节点选择器
*/
mountSelector: string;
/**
* 系统的全局配置,
* @example
* globalConfig:{
* mainUrl:"http://192.168.0.1:8080/test"
* }
* 可通过 :FastBaseApp.Config.getGlobalConfig("mainUrl") 在任意js中获取配置
*/
globalConfig: object | undefined;
/**
* FastServer请求接口全局请求参数。Web项目的全局参数优先级大于原生APP的全局参数
* @example
* finalParams:{
* userId:2,
* userName:undefined //当配置undefined值时,将排除此参数属性名
* }
*/
finalParams: object | undefined;
/**
* 所有页面全局注入的js文件
* @example
* injectJsFiles:["src/js/test.js","src/js/icon.js"]
* 或
* injectJsFiles:{
* "src/js/test.js":{
* exclude:["user","set"] //排除注入页面的名称,例如:user.html,set.html
* },
* "src/js/icon.js":{
* include:["user","set"] //指定注入页面的名称,例如:user.html,set.html
* }
* }
* 或
* injectJsFiles:[
* "src/js/test.js",
* {
* "src/js/icon.js":{
* exclude:["user","set"] //排除注入页面的名称,例如:user.html,set.html
* }
* }
* ]
*/
injectJsFiles: string[] | object | undefined;
/**
* 所有页面全局注入js文件过滤器,当 {@link injectJsFiles} 为数组时生效!
* @example
* injectJsFilter:{
* include:["user","set"] //指定注入页面的名称,例如:user.html,set.html
* }
* 或
* injectJsFilter:{
* exclude:["user","set"] //排除注入页面的名称,例如:user.html,set.html
* }
*/
injectJsFilter: {
/**
* 包含指定的页面,例如:user.html,set.html 则传入["user","set"]
*/
include?: string[];
/**
* 排除指定页面,例如:user.html,set.html 则传入["user","set"]
*/
exclude?: string[];
} | undefined;
/**
* 所有页面全局js变量注入
* @example
* injectVariable:{
* getUserId:function(){
* return 1;
* },
* server:"……"
* }
*/
injectVariable: any | undefined;
/**
* 是否使用vue默认的cache-loader缓存vue-loader,如果不使用,则在build版本前将删除缓存的目录.cache/vue-loader
*/
cacheVueLoader: boolean;
/**
* 开启vConsole插件的方式,默认:auto。可选值:auto(自动根据编辑的类型追加,server模式或debug模式开启),true(强制开启),false(不开启)
*/
vConsole: string;
/**
* 将公共js代码,进行分割,默认:true
*/
splitChunks: boolean;
/**
* 项目是否应用于创息公司的手机app,默认:true
*/
nativeMobileApp: boolean;
/**
* 项目编译级别,与 标签 build-level 对应
*/
buildLevel: number;
/**
* 编译级别的标签名,默认 build-level
*/
buildLevelTagName: string;
/**
* 插入Webpack函数function (config){};
*/
chainWebpack: ((config: any) => void);
/**
* 配置Webpack函数function (config){};
*/
configureWebpack: ((config: any) => void);
}