在前端开发中,我们经常需要为不同平台、不同终端等设计不同的样式。而当这个规模变得越来越大的时候,管理这些样式变得越来越困难。这时,我们可以使用 npm 包 style-dictionary 来管理和构建这些样式。
什么是 style-dictionary
style-dictionary 是一个 npm 包,它提供了一个简单的、可定制的样式程序。它允许您定义样式的结构,然后将这些结构映射到不同的输出,比如 CSS、JS、HTML 或 Sketch 等格式。它允许我们在各种平台上共享样式,同时减少样式管理的工作量。
安装和使用
安装
首先,我们需要在自己的项目中安装 style-dictionary。在终端中进入到项目目录,执行以下命令:
npm install style-dictionary --save-dev
定义样式
接下来,我们需要定义我们的样式。在项目根目录下,创建一个名为 config.json
的文件,例如:
-- -------------------- ---- ------- - --------- - ------------------ -- ------------ - ------ - ----------------- ------ ------------ ------------- -------- - - -------------- -------------------- --------- --------------- - - -- ----- - ----------------- ----- ------------ ------------- -------- - - -------------- ------------------ --------- ------------------- - - - - -
在上面的配置文件中,我们定义了:
- 存储归档定义的源路径;
- 一个名为 css 的 platform,指定了变量将转换为 css 变量(在上面我们所提到的格式)并编译到
build/web/css/variables.css
文件中; - 一个名为 js 的 platform,指定了将变量转换为 JavaScript 模块(格式为格式),并编译到
build/web/js/variables.js
文件中。
定义后使用
在我们定义好样式后,我们需要在代码中使用这些样式。在我们的代码中,我们可以引入 style-dictionary 并通过以下语句访问我们的样式:
const StyleDictionary = require('style-dictionary').extend('./config.json'); StyleDictionary.buildAllPlatforms();
示例代码
将变量转换为 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