【问题标题】:Jekyll export SASS vars to Javascript varsJekyll 将 SASS 变量导出为 Javascript 变量
【发布时间】:2017-12-06 12:49:01
【问题描述】:

我有一个使用 JekyllJekyll-Assets 构建的项目(UI Kit 就像 Bootstrap),我正在尝试了解是否可以创建Jekyll 插件或 Jekyll-Assets 插件,以便将 _variables.scss 文件中的所有 SASS vars 变成 中的对象 var >Javascript 文件。这个想法是转换:

// _variables.scss
$white: #FFF;
$black: #000;
$red: #FF0;

进入

// _variables.js
(function(){

    window.appVars = {
       white: '#FFF',
       black: '#000',
       red: '#FF0'
    }

})();

值得一提的是,这个转换后的 javascript 文件稍后会通过 Jekyll-Assets 构建过程导入到其他 javascript 文件中:

// app.js
//= include _variables.js
console.log (window.appVars);

【问题讨论】:

    标签: javascript sass jekyll jekyll-extensions


    【解决方案1】:

    您不需要插件来执行此操作。 最简单的方法是将 jekyll 变量传递给 sass 和 js 文件。

    Jekyll 变量

    这里,我使用 _config.yml 中的配置变量,但您也可以使用 _data 文件中的变量。

    # _config.yml
    custom_vars:
      text_color: red
      background_color: '#ddd'
    

    Sass 文件

    在标准的 jekyll 设置中,有一个引导文件 assets/main.css 可以导入它需要的所有内容。 看来你不能@import sass 文件包含前面的内容和变量,所以,你必须在@import statment 之前在你的boostrap 文件中获取你的变量。

    // assets/main.css
    {%- for var in site.custom_vars %}
    ${{ var[0] }}: {{ var [1] }};
    {%- endfor %}
    @import "whatever";
    

    Js 文件

    通过添加前端来指示 jekyll 处理您的文件:

    ---
    ---
    // assets/script.js
    (function(){
        window.appVars = {
            {%- for var in site.custom_vars %}
              {{ var[0] }}: '{{ var [1] }}'
              {%- unless forloop.last %},{% endunless %}
            {%- endfor %}
        }
    })();
    

    【讨论】:

    • 嗨大卫,感谢您的帮助,很抱歉延迟了我的反馈。在 Jekyll 级别集中所有变量然后在任何文件上将其哑化时,您的答案非常好。不幸的是,在我的情况下,我可能没有正确解释这个问题,我需要处理这些变量,以便我可以获得如下结果:$color-master-light:mix($color-master, #FFF, 16%) !default;$table-border-color: rgba(0, 0, 0, 0.07) !default; 甚至 $var-1: 1; $var-2: $var-1 + 2;
    • 您在{{ var[0] }} 中有变量名,在{{ var[1] }} 中有变量值。我不明白什么不起作用。
    • 大卫,如果我只是简单地将所有内容作为字符串放入文件中,那么像 mix($color-master, #FFF, 16%) 这样的值将导致 javascript 启动错误,因为它不知道如何处理它。另一方面,我需要“解析”的 SASS 文件的方法/函数(如计算的而不是转换为 CSS),以便考虑所有逻辑。
    猜你喜欢
    • 2020-08-14
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    相关资源
    最近更新 更多