uno.config.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import {
  2. defineConfig,
  3. presetAttributify,
  4. presetIcons,
  5. transformerDirectives,
  6. transformerVariantGroup,
  7. } from 'unocss';
  8. // @docs https://github.com/unocss-applet/unocss-applet/tree/main
  9. /** 在小程序(UniApp 和 Taro)中使用UnoCSS,兼容不支持的语法 */
  10. import { presetApplet, presetRemRpx, transformerAttributify } from 'unocss-applet';
  11. // @docs https://unocss.dev/presets/legacy-compat
  12. import presetLegacyCompat from '@unocss/preset-legacy-compat';
  13. const isApplet = process.env?.UNI_PLATFORM?.startsWith('mp-') ?? false;
  14. const transformers = [];
  15. const presets = [];
  16. if (isApplet) {
  17. // 解决第三方样式冲突问题
  18. transformers.push(transformerAttributify({ prefixedOnly: true, prefix: 'sn' }));
  19. } else {
  20. presets.push(presetRemRpx({ mode: 'rpx2rem' }));
  21. }
  22. presets.push(presetApplet());
  23. presets.push(presetAttributify());
  24. export default defineConfig({
  25. presets: [
  26. ...presets,
  27. // 配置图标
  28. presetIcons({
  29. scale: 1.2,
  30. warn: true,
  31. prefix: 'sn-',
  32. autoInstall: true,
  33. extraProperties: {
  34. display: 'inline-block',
  35. 'vertical-align': 'middle',
  36. },
  37. }),
  38. // 兼容app端颜色值
  39. presetLegacyCompat({
  40. commaStyleColorFunction: true,
  41. }),
  42. ],
  43. /**
  44. * 自定义快捷语句
  45. * @docs https://unocss.dev/config/shortcuts
  46. */
  47. shortcuts: [
  48. {
  49. 'sn-btn-default': 'text-gray-400 border-rd-20 after:border-none',
  50. },
  51. ],
  52. transformers: [transformerDirectives(), transformerVariantGroup(), ...transformers],
  53. rules: [
  54. [
  55. 'p-safe',
  56. {
  57. padding:
  58. 'env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)',
  59. },
  60. ],
  61. ['pt-safe', { 'padding-top': 'env(safe-area-inset-top)' }],
  62. ['pb-safe', { 'padding-bottom': 'env(safe-area-inset-bottom)' }],
  63. ],
  64. });