UNPKG

magix-combine

Version:

合并Magix View的html,js,css成一个js文件,并检测html,js,css中可能存在的问题

504 lines (487 loc) 14.1 kB
declare module "magix-combine" { interface ICombineResult { /** * 通过config指定的tmplFolder文件夹中的文件路径 */ from: string /** * 通过config指定的srcFolder文件夹中的文件路径 */ to: string | undefined /** * 当前编译的from文件依赖的其它文件 */ fileDeps: { [key: string]: 1 } /** * 文件内容 */ content: string /** * 指示是否排除define的包装 */ exclude: boolean /** * 指示是否把该文件内容根据to的位置写入到硬盘上 */ writeFile: boolean /** * 模块id */ moduleId: string /** * 依赖的其它模块,同requires */ deps: string[] /** * 依赖的其它模块,同deps */ requires: string[] /** * 依赖的模块声明的变量 */ vars: string[] /** * 当前js文件收集到的样式名称映射对象 */ cssNamesMap: { [originalSelector: string]: string } /** * 当前js文件收集到的样式名称所在的文件 */ cssNamesInFiles: { [selector: string]: string } /** * 当前js文件收集到的样式标签名称所在的文件 */ cssTagsInFiles: { [tag: string]: string }, /** * 模块包名 */ pkgName: string } interface IRequireInfo { /** * require语句变量前面的前缀信息,如var或,等 */ prefix: string /** * require语句后面的信息,如;等 */ tail: string /** * 未经任何处理的原始模块id */ originalDependedId: string /** * 依赖的id */ dependedId: string /** * 声明的变量字符串 */ variable: string /** * 如果存在该字段,则把require语句换成该字段指定的内容 */ replacement?: string } interface ICheckerConfig { /** * 样式 */ css: boolean // /** // * 样式中的url // */ // cssUrl: boolean // /** // * js循环 // */ // jsLoop: boolean // /** // * js接口服务 // */ // jsService: boolean /** * js this别名 */ //jsThis: boolean /** * 模板命令语法检查 */ tmplCmdSyntax: boolean /** * 模板img属性 */ //tmplAttrImg: boolean /** * 不允许的标签 */ tmplDisallowedTag: boolean /** * 危险的属性 */ tmplAttrDangerous: boolean /** * 需要添加noopener */ tmplAttrNoopener: boolean /** * 检测anchor类标签 */ tmplAttrAnchor: boolean /** * mx事件 */ tmplAttrMxEvent: boolean /** * mx view */ tmplAttrMxView: boolean /** * 重复的属性 */ tmplDuplicateAttr: boolean /** * 模板中函数或for of检测 */ tmplCmdFnOrForOf: boolean /** * 标签配对 */ //tmplTagsMatch: boolean } /** * 组件信息对象 */ interface IGMap { /** * 组件的路径 */ path: string /** * 生成组件时,使用的原生的html标签 */ tag: string } interface ICompileCssStart { /** * 扩展名 */ ext: string /** * 文件完整路径 */ file: string /** * css内容 */ content: string /** * 短文件名 */ shortFile: string } /** * 读取css结果对象 */ interface ICompileCssResult { /** * 读取的样式文件是否存在 */ exists: boolean /** * 文件完整路径 */ file: string /** * css内容 */ content: string /** * source map */ map: object } interface IConfig { /** * 编译的模板目录。默认tmpl */ commonFolder?: string /** * 编译结果存储目录。默认src */ compiledFolder?: string /** * 匹配模板中模板引擎语句的正则,对模板处理时,先去掉无关的内容处理起来会更准确 */ tmplCommand?: RegExp /** * cssnano压缩选项 */ cssnano: object /** * less编译选项 */ less: object /** * sass编译选项 */ sass: object /** * 生成样式选择器时的前缀,通常是项目名。 */ projectName?: string /** * 是否输出css sourcemap,默认false */ //sourceMapCss?: boolean /** * 是否支持类似 import 'style.css' 导入样式的语法,默认false */ importCssSyntax?: boolean /** * magix模块名称,默认magix */ magixModuleIds?: [string] /** * 任务同时执行的并发数量,默认为1 */ concurrentTask: number /** * autprefixer配置 */ autoprefixer?: object /** * 加载器类型,该选项决定如何添加包装,如添加define函数。默认为cmd加载器 */ loaderType?: "amd" | "amd_es" | "cmd" | "cmd_es" | "iife" | "iife_es" | "none" | "webpack" | "kissy" | "kissy_es" | "umd" | "umd_es" | "acmd" | "acmd_es" /** * html压缩选项 */ htmlminifier?: object /** * 是否输出日志信息。默认为true */ log?: boolean /** * 编译成调试版本,默认false */ debug?: boolean /** * 检测对象 */ checker?: ICheckerConfig /** * 是否把模板中的view打包到js中的文件依赖中,默认false。如果为true,渲染的view会在加载相应的js时提前加载,有效解决页面渲染时子view加载的闪烁问题 */ tmplAddViewsToDependencies?: boolean /** * 是否增加事件前缀,开启该选项有利于提高magix查找vframe的效率。默认为true */ tmplAddEventPrefix?: boolean /** * 模板中静态节点分析,只有在magixUpdaterIncrease启用的情况下该配置项才生效,默认true */ tmplStaticAnalyze?: boolean /** * 项目中使用的全局样式,不建议使用该选项 */ globalCss?: string[] /** * 项目中全局但做为scoped使用的样式 */ scopedCss?: string[] /** * 对样式做检测时,忽略某些全局样式的检测,该选项配合globalCss使用。 */ uncheckGlobalCss?: string[] /** * 是否使用@转换路径的功能,如@./index转换成app/views/orders/index。默认为true */ useAtPathConverter?: boolean /** * 待编译的文件后缀,默认为['js', 'mx', 'ts', 'jsx', 'es', 'tsx'] */ jsFileExtNames?: string[] /** * mx-view 处理器 */ mxViewProcessor?: ({ path: string, pkgName: string }) => string /** * 待编译的模板文件后缀,默认为['html', 'haml', 'pug', 'jade', 'tpl'] */ tmplFileExtNames?: string[] /** * 模板中不会变的变量,减少不必要的子模板的分析输出 */ tmplConstVars?: object /** * 是否使用类mustach模板,默认true */ tmplArtEngine?: boolean /** * 模板中的全局变量,这些变量不会做scope处理 */ tmplGlobalVars?: object /** * 模板输出时是否输出识别到的事件列表,默认为false */ tmplOutputWithEvents?: boolean /** * 是否启用增量更新,即dom diff */ magixUpdaterIncrement?: boolean /** * 是否启用双向绑定时生成唯一一个mxe属性,默认true */ magixUpdaterBindExpression?: boolean /** * 是否启用quick模板 */ magixUpdaterQuick?: boolean /** * 是否禁用magix view中的updater,该选项影响模板对象的输出,默认为false */ disableMagixUpdater?: boolean /** * 补充模板中方法调用时的参数 */ tmplPadCallArguments?: (name: string) => string /** * 编译文件被写入硬盘时调用 */ writeFileStart?: (e: ICombineResult) => void /** * 开始编译某个js文件之前的处理器,可以加入一些处理,比如typescript的预处理 */ compileJSStart?: (content: string, e: ICombineResult) => string | Promise<ICombineResult> | Promise<string> /** * 结束编译时的处理器 */ compileJSEnd?: (content: string, e: ICombineResult) => string | Promise<ICombineResult> | Promise<string> /** * 开始编译css前处理器 */ compileCSSStart?: (css: string, e: ICompileCssStart) => Promise<string> | string /** * 结束编译css时的处理器 */ compileCSSEnd?: (css: string, e: ICompileCssResult) => Promise<string> | string /** * 对自定义标签做加工处理 */ customTagProcessor?: (tmpl: string, e?: ICombineResult) => string /** * 检测js代码中循环嵌套的层数,当超过该值时,输出提示,默认4层。合理的数据结构可以减少循环的嵌套,有效的提升性能 */ jsLoopDepth?: number /** * 组件配置对象 */ galleries?: object /** * 对模板中的标签做处理 */ tmplTagProcessor?: (tag: string) => string /** * 对模板中的样式类做处理 */ cssNamesProcessor?: (tmpl: string, cssNamesMap?: object) => string /** * 转换模板中的命令字符串 */ compileTmplCommand?: (tmpl: string, config: IConfig) => string /** * 开始转换模板 */ compileTmplStart?: (tmpl: string) => string /** * 结束转换模板 */ compileTmplEnd?: (tmpl: string) => string /** * 处理样式内容 */ cssConentProcessor?: (content: string, shortName: string, e: ICombineResult) => Promise<string> applyStyleProcessor?: () => string /** * 加工处理模块id */ resolveModuleId?: (moduleId: string) => string /** * 加工处理require语句 */ resolveRequire?: (requireInfo: IRequireInfo, e?: ICombineResult) => void } /** * 配置打包编译参数 * @param cfg 配置对象 */ function config(cfg: IConfig): IConfig /** * 遍历文件夹及子、孙文件夹下的文件 * @param folder 文件夹 * @param callback 回调 */ function walk(folder: string, callback: (file: string) => void): void /** * 读取文件内容 * @param file 文件路径 * @param original 是否二进制数据 */ function readFile<T>(file: string, original: boolean): T /** * 复制文件,当复制到的路径中文件夹不存在时,会自动创建文件夹 * @param from 源文件位置 * @param to 复制到目标位置 */ function copyFile(from: string, to: string): void /** * 写入文件内容,当目标位置中的文件夹不存在时,会自动创建文件夹 * @param to 目标位置 * @param content 文件内容 */ function writeFile(to: string, content: string): void /** * 移除magix-combine中对该文件相关的依赖及其它信息 * @param from 模板文件夹tmpl中的文件 */ function removeFile(from: string): void /** * 根据配置信息编译整个项目中的文件 */ function combine(): Promise<void> /** * 编译单个模板文件并写入src目录 * @param from 模板文件夹tmpl中的文件 */ function processFile(from: string): Promise<void> /** * 编译文件内容,返回编译后的对象,不写入到硬盘 * @param from 模板文件夹tmplFolder中的文件 * @param to 源文件夹srcFolder中的文件位置,可选 * @param content 文件内容,可选 */ function processContent(from: string, to?: string, content?: string): Promise<ICombineResult> /** * 处理tmpl文件夹中的模板文件,通常向节点添加spm等属性 */ function processTmpl(): Promise<void> /** * 移除某个文件的缓存,在下次编译的时候重新编译该文件 * @param file 文件路径 */ function removeCache(file: string): void /** * 获取依赖当前文件的其它文件 * @param file 文件路径 */ function getFileDependents(file: string): object }