Jekyll 不会使用 'jekyll serve' 编译 scss 文件



我正在尝试使用Jekyll创建一个网站,一切都很好。直到我想自定义设计。

我已经更新了我的css/main.scss,以便在_sass/theme.scss:中包含我的自定义主题

// Import partials from `sass_dir` (defaults to `_sass`)
@import
        "base",
        "layout",
        "syntax-highlighting",
        "theme"
;

我还更新了_config.yml,因为jekyll serve -H 0.0.0.0没有编译我的新sass文件。我添加了以下内容:

sass:
    sass_dir: _sass

问题是jekyll serve不编译我的sass文件,我总是看到默认的css。我也尝试过在css/main.scss的末尾直接复制_sass/theme.scss的内容,但什么也没发生。

直到我在jekyll serve运行时修改了其中一个文件。问题是jekyll-watch了解我的更新并编译scs文件。我可能为jekyll build做了什么错事——第一次尝试不编译sass文件?

如果你需要它,这里是我的项目树:

.
├── _config.yml
├── css
│   ├── main.css
│   └── main.scss
├── _images
├── img
├── index.html
└── _sass
    ├── _base.scss
    ├── _layout.scss
    ├── _syntax-highlighting.scss
    └── _theme.scss

有人知道怎么解决这个问题吗?

谢谢你,

好的,我明白了!

您有一个css/main.css文件,它作为静态文件复制到_site/css/main.css中。

问题是它与css/main.scss目标同名,后者也是_site/css/main.css

所以在第一次构建时:

  • css/main.scss被处理为main.css
  • 然后,当复制静态文件时,它被css/main.css覆盖

解决方案:删除css/main.css

您是否已将前面的内容添加到main.scss文件的顶部?

首先添加到您的config.yml

sass:
    sass_dir: _sass

然后在main.scss文件的顶部添加两条虚线https://jekyllrb.com/docs/assets/

---
---
@charset "utf-8";

之后在您的cmd控制台中写入

杰基尔服务

并检查您的汇编。

我在尝试使用Jekyll将YAML内容传递到部分时遇到了类似的问题。看起来这个工作流程是不可能的。

解决方法是将所有变量放在主SCSS文件上,并让Jekyll从YAML中填充值,然后对实际样式使用分部。

以下是我的一些解决方案的简单回购:https://github.com/guschiavon/jekyllfy-sass

最新更新