@opentiny/tiny-toolkit-docs
Version:
这里对你的套件进行简单描述, 比如适用哪些场景,使用了什么技术, 有什么特点
57 lines (53 loc) • 1.62 kB
JavaScript
// 定制脚本的参数
const defaultOption = {
prefix: '',
isRem: false,
breakpoints: {
xs: '0px',
sm: '640px',
md: '1024px',
lg: '1280px',
},
};
// rules
import border from './rules/border';
import color from './rules/color';
import font from './rules/font';
import layout from './rules/layout';
import size from './rules/size';
import transform from './rules/transform';
import utils from './rules/utils';
import animate from './rules/animate';
// variants
import child from './variants/child';
import hover from './variants/hover';
import important from './variants/important';
import mediaquery from './variants/mediaquery';
import range from './variants/range';
import select from './variants/select';
import prefixBuilder from './variants/prefix';
// preflights
import preflights from './preflights';
// 每一项 opt={rules:[],shortcuts:[]}
function merge(options, ...rules) {
let ret = { rules: [], shortcuts: [] };
rules.forEach(ruler => {
let rule = ruler(options);
ret.rules = ret.rules.concat(rule.rules);
ret.shortcuts = ret.shortcuts.concat(rule.shortcuts);
});
return ret;
}
export default options => {
const tempOptions = { ...defaultOption, ...options };
let prefix = tempOptions.prefix;
return {
name: 'preset-tinyuno',
...merge(options, border, color, font, layout, size, transform, utils, animate),
variants: [prefixBuilder(prefix), child, hover, important, mediaquery, range, select],
theme: {
breakpoints: tempOptions.breakpoints,
},
preflights,
};
};