【问题标题】:Cannot import variables from sass file in Jekyll无法从 Jekyll 中的 sass 文件导入变量
【发布时间】:2019-09-06 14:37:44
【问题描述】:

我有一个variables.scss 文件,它在我的根目录中保存了我所有的 sass 变量。我想将它导入到我的其他 scss 文件中,以便可以使用这些变量:

@import "/variables.scss";

但是,当我运行该项目时,我收到以下错误:

转换错误:Jekyll::Converters::Scss 在转换 'assets/css/index.scss' 时遇到错误:
找不到或无法读取要导入的文件:/variables.scss。加载路径:第1行C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/minima-2.5.0/_sass

我做错了什么以及如何正确导入我的 sass 变量。这是我的config_.yml 文件:

# Welcome to Jekyll!
#
# This config file is meant for settings that affect your whole blog, values
# which you are expected to set up once and rarely edit after that. If you find
# yourself editing this file very often, consider using Jekyll's data files
# feature for the data you need to update frequently.
#
# For technical reasons, this file is *NOT* reloaded automatically when you use
# 'bundle exec jekyll serve'. If you change this file, please restart the server process.

# Site settings
# These are used to personalize your new site. If you look in the HTML files,
# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
# You can create any custom variable you would like, and they will be accessible
# in the templates via {{ site.myvariable }}.
title: Project
email: your-email@example.com
description: >- # this means to ignore newlines until "baseurl:"
  Write an awesome description for your new site here. You can edit this
  line in _config.yml. It will appear in your document head meta (for
  Google search results) and in your feed.xml site description.
baseurl: "" # the subpath of your site, e.g. /blog
url: "" # the base hostname & protocol for your site, e.g. http://example.com
twitter_username: jekyllrb
github_username:  jekyll

# Build settings
markdown: kramdown
theme: minima
plugins:
  - jekyll-feed
  - jekyll-paginate-v2

collections:
  posts:
    output: true
    permalink: /releases/:path

permalink: pretty

sass:
  sass_dir: _sass
  style: compressed
future: true 
published: true
# Exclude from processing.
# The following items will not be processed, by default. Create a custom list
# to override the default setting.
# exclude:
#   - Gemfile
#   - Gemfile.lock
#   - node_modules
#   - vendor/bundle/
#   - vendor/cache/
#   - vendor/gems/
#   - vendor/ruby/

############################################################
# Site configuration for the Jekyll 3 Pagination Gem
# The values here represent the defaults if nothing is set
pagination:

  # Site-wide kill switch, disabled here it doesn't run at all 
  enabled: true

  # Set to 'true' to enable pagination debugging. This can be enabled in the site config or only for individual pagination pages
  debug: false

  # The default document collection to paginate if nothing is specified ('posts' is default)
  collection: 'posts'

  # How many objects per paginated page, used to be `paginate` (default: 0, means all)
  per_page: 5

  # The permalink structure for the paginated pages (this can be any level deep)
  permalink: '/page/:num/' # Pages are index.html inside this folder (default)
  #permalink: '/page/:num.html' # Pages are simple html files 
  #permalink: '/page/:num' # Pages are html files, linked jekyll extensionless permalink style.

  # Optional the title format for the paginated pages (supports :title for original page title, :num for pagination page number, :max for total number of pages)
  title: ':title - page :num'

  # Limit how many pagenated pages to create (default: 0, means all)
  limit: 0

  # Optional, defines the field that the posts should be sorted on (omit to default to 'date')
  sort_field: 'date'

  # Optional, sorts the posts in reverse order (omit to default decending or sort_reverse: true)
  sort_reverse: true

  # Optional, the default category to use, omit or just leave this as 'posts' to get a backwards-compatible behavior (all posts)
  category: 'posts'

  # Optional, the default tag to use, omit to disable
  tag: ''

  # Optional, the default locale to use, omit to disable (depends on a field 'locale' to be specified in the posts, 
  # in reality this can be any value, suggested are the Microsoft locale-codes (e.g. en_US, en_GB) or simply the ISO-639 language code )
  locale: '' 

 # Optional,omit or set both before and after to zero to disable. 
 # Controls how the pagination trail for the paginated pages look like. 
  trail: 
    before: 2
    after: 2

  # Optional, the default file extension for generated pages (e.g html, json, xml).
  # Internally this is set to html by default
  extension: html

  # Optional, the default name of the index file for generated pages (e.g. 'index.html')
  # Without file extension
  indexpage: 'index'

############################################################

【问题讨论】:

    标签: jekyll


    【解决方案1】:

    首先,只使用相对基名来导入:

    @import "variables";
    
    // or if you've nested partials
    @import "subdirectory/partial_name";
    

    其次,如果您使用的是sassc gem,请确保您在捆绑包中至少使用了sassc-2.1.0。 (运行bundle show 进行检查)。或者,如果您正在使用已弃用的 sass gem,请继续使用它,直到可以升级为止。

    最后,确保您的 scss partial 没有未闭合的括号。


    更新

    Jekyll 期望在配置的sass_dir(默认为_sass)中找到要导入的部分。 因此,您必须确保路径 _sass/variables.scss 存在于您的源目录或您正在使用的主题宝石中。

    【讨论】:

    • 我尝试使用相对基本名称,但它仍然无法正常工作,它给了我这个错误。我不使用 sassc gem。
    • 这里没有太多信息可供参考。如果您将网站的源代码托管在 GitHub 或 Gitlab 之类的地方,可以查看一下。否则,只会引发猜测。
    • 是的,我用项目 repo URL 更新了我的问题
    • 无法访问存储库。请提供或要求您的客户授予我只读权限。
    • 我可以给你,你能告诉我你的邮箱,以便我邀请你吗?
    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    相关资源
    最近更新 更多