@cataract6545/tmui
Version:
tm-vuetify是一个新势力由主题驱动的UI组件库,相比其它优势大,组件全,设计趋势紧跟未来。具有主题生成,主题实时切换,暗黑实时切换,lottie动画,图表等新颖功能,tmui TMUI
57 lines (49 loc) • 1.71 kB
text/typescript
/**
* 作者 tmui | https://tmui.design
* 版权:本插件只服务于tmui组件库,不得移植复制到任何地方使用,侵权必究.
*/
import { normalizePath } from 'vite'
import {path} from "path"
import * as file from "fs"
export default function(opts?:any){
return {
name:"tmui-vite-css",
// 该插件在 plugin-vue 插件之前执行,这样就可以直接解析到原模板文件
enforce: 'pre',
handleHotUpdate({file,modules,read}){
},
// 代码转译,这个函数的功能类似于 `webpack` 的 `loader`
transform(code:string, id:string, opt) {
const rule = /\.[n]{0,}vue$/;
const customRule = /\<tm-sheet.*\>/g;
if (!rule.test(id)) return code;
let fpath = normalizePath(id).toLocaleLowerCase();
//只处理页面。
if(fpath.indexOf('tmui/components')>-1) return;
//过滤不处理的特殊文件
if(checkFileisTmui(id)) return code;
const nodelistStringtag = code.match(customRule)
// console.log(nodelistStringtag)
if(!nodelistStringtag) return;
/** 正则color属性。 */
let attrRule = /\s(color)=([\s]{0,}".*")|\s(color)[\s]{0,}=[\s]{0,}('.*')/g
nodelistStringtag.forEach(el=>{
el.match(attrRule)
})
return code;
}
}
}
function checkFileisTmui(filepath:string){
let autoColorCom = [
'app.vue',
]
filepath = normalizePath(filepath).toLocaleLowerCase()
let filename = filepath.substring(filepath.lastIndexOf('/')+1);
return autoColorCom.includes(filename)
}
function getFileName(id:string){
let filepath = normalizePath(id)
let filename = filepath.substring(filepath.lastIndexOf('/')+1);
return filename
}