-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
@amcss/default 插件的开发 #21
Comments
default 插件概述该插件独立于所有插件,core 模块强依赖于该插件,因此在某种意义上来说,这不像是一个插件,而是一个模块 请调用 core 会在内部 new default 插件,必须使用 OOP。new default 插件时,会传入用户自定义的 preset-rules ,所以在 compile 模块中,请处理用户的 在 default 插件类中需要提供以下 api:
default 插件的注意事项在 scanner 阶段,core 会传入 const shortcuts = {
"tick-heart": "w-100 tick-basic hover:tick ..."
} 默认插件需要对 shortcuts 进行处理,并将无法处理的类返回。 默认插件在扫描 code 时需要做的工作:
默认插件在处理 shortcuts 时需要做下面的工作:
默认插件的 type DefaultPluginScannerReturnValue = {
// 根据 code 处理的 amClasses,这里记得也要将 shortcuts 进行处理
amClasses: AmClass<T>[];
// 无法处理的 className,还要包含 shortcuts 中的内容
unResolvedClassNames: Set<string>[],
} |
@masterX89 @CoderCrush |
Default 插件伪代码 export function createDefaultPlugin(
preset: PresetsRules[] = [],
shortcuts: Record<string, string> = {}
) {
return new DefaultPlugin(preset, shortcuts);
}
type DefaultPluginScannerReturnValue = {
// 根据 code 处理的 amClasses,这里记得也要将 shortcuts 进行处理
amClasses: AmClass[];
// 无法处理的 className,还要包含 shortcuts 中的内容
unResolvedClassNames: Set<string>;
};
export class DefaultPlugin {
constructor(
private preset: PresetsRules[],
private shortcuts: Record<string, string>
) {}
scanner(code: string) {
return {} as DefaultPluginScannerReturnValue;
}
compiler(amClass: AmClass) {
return {} as AmNode;
}
generator(amNode: AmNode) {
return "css code";
}
} |
想确认一下
和伪代码的结构略有不同:
|
是 Set,修改结构的时候没同步过来 |
描述
基础css的识别
基础样式的扫描器和提取器
基础样式的编译器
基础样式的生成器
目标仓库
https://github.com/developer-plus/amcss
截止日期
No response
其他补充
No response
The text was updated successfully, but these errors were encountered: