美文网首页
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

    1. 需求 2. 场景 3. 解决方案 4. 搜索正则和替换内容4.1. 设置变量的默认值4.2. 变量赋值4.3...

  • webpack使用2

    Get Started 加载sass、less、stylus 懒加载 1. 加载sass、less、stylus ...

  • scripts+commonjs+gulp

    css预处理器 Sass https://www.sass.hk/ LESS Stylus Sass 嵌套 嵌套规...

  • sass

    css预处理器 Sass https://www.sass.hk/ LESS Stylus Sass 嵌套 嵌套规...

  • CSS预处理器入门介绍:Sass、Less 和 Stylus

    css 预处理器:Sass、Less 和 Stylus 【Sass】 扩展名:「 *.sass 」和「 *.scs...

  • 关于sass(scss)、less、postcss、stylus

    关于sass(scss)、less、postcss、stylus等的用法与区别 一. Sass/Scss、Less...

  • Sass学习笔记

    ​ Sass是使用Ruby语言编写的css预处理语言,诞生于2007年。Sass, LESS, stylus等...

  • css预处理器stylus基本用法

    css预处理器有Less、Sass(Scss)及Stylus;它们各自的背景如下: Sass:2007年诞生,最早...

  • stylus 安装-编译

    简介 css预处理器有Less、Sass(Scss)及Stylus;它们各自的背景如下: Sass:2007年诞生...

  • less

    预处理语言的诞生 其中 就我所知的有三门语言:Sass、Less 、Stylus 。 Sass 诞生于 2007 ...

网友评论

      本文标题:Sass转Stylus

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