美文网首页
Sass转Stylus

Sass转Stylus

作者: 科研者 | 来源:发表于2020-03-25 21:21 被阅读0次

    1. 需求

    将 Sass 的变量配置文件 转成 Stylus 的变量配置文件

    2. 场景

    从特性和语法上,个人认为 Stylus 优于 Sass ,Sass 优于 Less ,所以项目造型上,我选择了 Stylus ,然而项目又用到了 Element-UI , Element-UI 的主题变量是用 Sass 写的,为了在 Stylus 中能访问到 Element-UI 的主题变量,需要将 Element-UI 用 Sass 写的主题变量 转换成 Stylus 语法;

    3. 解决方案

    曾经找到过一个将Sass转成Stylus的在线工具http://sass2stylus.com,但该工具实现太简单,只是将 Sass 的 : 换成 =,并去除了 !default 标识,而简单的去除 !default 标识是不对了,应该转成 Stylus 给变量设置默认值的语法,即使这样,也远远不能满足我的需求;

    为了更加彻底的转换,我写了一系列的正则,争取尽可能地转换更多的内容;

    本文提供了一些 搜索正则 和 替换结果,你可以在支持正则搜索与替换的编辑器(如:VSCode、Webstorm等等)里进行搜索与替换;

    将来会开发一个转换工具,争取彻底实现将 Sass 和 Stylus 互转;

    4. 搜索正则和替换内容

    4.1. 设置变量的默认值

    描述
    将 Sass 的设置变量默认值的方式 换成 Stylus 设置变量默认值的方式;

    行为
    将 Sass 中定义默认值 !default 去除,并将 Sass 的变量赋值符号 : 替换成 Stylus 条件赋值符 ?=

    操作

    • 搜索正则:(?<=\$[-_\w]+)\s*:\s*(.+)!default
    • 替换成为:?= $1

    4.2. 变量赋值

    描述
    将Sass给变量赋值的方式 换成 Stylus 给变量赋值的方式;

    行为
    将Sass的变量赋值符 : 替换成 Stylus 的变量赋值符 =

    操作

    • 搜索正则:(?<=\$[-_\w]+)\s*:\s*(?!.+!default)
    • 替换成为:=

    4.3. 插值语句

    描述
    将Sass的插值语法 换成 Stylus 的插值语法;

    行为
    将 Sass 的插值语法 #{[表达式]} 替换成 Stylus 的插值语法 {[表达式]}

    操作

    • 搜索正则:(?<=^.*\s+)#\{([^{}]+)\}(?=\s+)
    • 替换成为:($1)

    4.4. 行内Map

    描述
    将 Sass 写在一行内的 Map 字面量语法 换成 Stylus 的 哈希 Hashes 字面量语法;

    行为
    将 Sass 写在一行内的 Map 字面量语法 (key:value,key:value...) 换成 Stylus 的 哈希 Hashes 字面量语法 {key:value,key:value...}

    操作

    • 搜索正则:\((\s*(.+:.+)(,.+:.+)*)\)
      • 注意:该正则会匹配到所有的写在一行内的 Map 格式 (key:value,key:value...),即使它是被放在引号内作为字符串值来对象,也会被该正则匹配到,对此这种情况应慎重,所以不建议执行替换所有的操作;
    • 替换成为:{$1}

    4.5. 跨行Map

    描述
    将 Sass 跨多行的 Map 字面量语法 换成 Stylus 的 哈希 Hashes 字面量语法;

    行为
    将 Sass 跨多行的 Map 字面量语法,如:

    (
        key:value,
        key:value,
        ...
    )
    

    换成 Stylus 的 哈希 Hashes 字面量语法,如:

    {
        key:value,
        key:value,
        ...
    }
    

    操作

    • 搜索正则:\((\s*\n*(.+:.+)(,\s*\n*.+:.+)+\n*)\)
      • 注意:该正则会匹配到所有的Map 格式,即使它是被放在引号内作为字符串值来对象,也会被该正则匹配到,对此这种情况应慎重,所以不建议执行替换所有的操作;
    • 替换成为:{$1}

    相关文章

      网友评论

          本文标题:Sass转Stylus

          本文链接:https://www.haomeiwen.com/subject/sdcfuhtx.html