npm 包 style-dictionary 使用教程

阅读时长 6 分钟读完

在前端开发中,我们经常需要为不同平台、不同终端等设计不同的样式。而当这个规模变得越来越大的时候,管理这些样式变得越来越困难。这时,我们可以使用 npm 包 style-dictionary 来管理和构建这些样式。

什么是 style-dictionary

style-dictionary 是一个 npm 包,它提供了一个简单的、可定制的样式程序。它允许您定义样式的结构,然后将这些结构映射到不同的输出,比如 CSS、JS、HTML 或 Sketch 等格式。它允许我们在各种平台上共享样式,同时减少样式管理的工作量。

安装和使用

安装

首先,我们需要在自己的项目中安装 style-dictionary。在终端中进入到项目目录,执行以下命令:

定义样式

接下来,我们需要定义我们的样式。在项目根目录下,创建一个名为 config.json 的文件,例如:

-- -------------------- ---- -------
-
  --------- -
    ------------------
  --
  ------------ -
    ------ -
      ----------------- ------
      ------------ -------------
      -------- -
        -
          -------------- --------------------
          --------- ---------------
        -
      -
    --
    ----- -
      ----------------- -----
      ------------ -------------
      -------- -
        -
          -------------- ------------------
          --------- -------------------
        -
      -
    -
  -
-

在上面的配置文件中,我们定义了:

  1. 存储归档定义的源路径;
  2. 一个名为 css 的 platform,指定了变量将转换为 css 变量(在上面我们所提到的格式)并编译到 build/web/css/variables.css 文件中;
  3. 一个名为 js 的 platform,指定了将变量转换为 JavaScript 模块(格式为格式),并编译到 build/web/js/variables.js 文件中。

定义后使用

在我们定义好样式后,我们需要在代码中使用这些样式。在我们的代码中,我们可以引入 style-dictionary 并通过以下语句访问我们的样式:

示例代码

将变量转换为 CSS 变量

-- -------------------- ---- -------
-
  --------- -
    ------------------
  --
  ------------ -
    ------ -
      ----------------- ------
      ------------ -------------
      -------- -
        -
          -------------- --------------------
          --------- ---------------
        -
      -
    -
  --
  ------------- -
    ---------------- -
      ------- --------
      --------- -
        ------ ------ ----------
      -
    -
  -
-

source 中,我们定义了要处理的文件路径。在这个例子中是 tokens/**/*.json,意思是我们将所有 tokens 目录下的 .json 文件都进行处理。

接下来是平台定义,我们定义了一个名叫做 css 的平台。transformGroup 是指向平台使用的转换器数组,我们在这里使用 css

css 平台需要在 files 数组中添加我们要编译代码的信息。我们添加了一个名为 variables.css 的文件,并定义了我们要编译的格式。

最后是我们添加的转换器,css/variables。这个转换器是我们自定义的。我们定义了它的 type 和 format。它的 type 是 value,它的 format 是一个包含 CSS 变量的字符串。在渲染过程中,所有的变量都将被替换掉,然后生成的内容将被添加到 css/variables.css 文件中。

将变量转换为 SCSS 变量

-- -------------------- ---- -------
-
  --------- -
    ------------------
  --
  ------------ -
    ------- -
      ----------------- -------
      ------------ -------------
      -------- -
        -
          -------------- ----------------------
          --------- ----------------
        -
      -
    -
  --
  ------------- -
    ----------------- -
      ------- --------
      --------- -
        ------- ----------------------
      -
    -
  -
-

这段代码和上面的 CSS 变量的代码类似,只不过是被定义在 scss/variables.scss 文件中。

将变量转换为 JavaScript 模块

-- -------------------- ---- -------
-
  --------- -
    ------------------
  --
  ------------ -
    ----- -
      ----------------- -----
      ------------ -------------
      -------- -
        -
          -------------- ---------------
          --------- -------------------
        -
      -
    -
  --
  ------------- -
    ----- -
      ------- --------
      --------- --------------- - --------
    -
  -
-

这段代码和上面两个例子有所不同,我们定义了 javascript/platforms,并将变量编译到 js/tokens.js 文件中。我们定义了一个名为 js 的自定义转换器,并将其指定为 transformGroup。这个转换器类型是 value,它的格式是 module.exports =,表示我们将这个模块导出为模块。

结语

在我们的前端项目中,样式通常占据很大的一部分。使用 style-dictionary 可以更好的管理、构建这些样式,减少因样式管理所带来的问题。我相信在使用样式时,这个工具会为您带来极大的便利。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/style-dictionary