Skip to content

[Bug]: jekyll new --blank creates non-working scaffold due to sass naming #9250

@qitianshi

Description

@qitianshi

Operating System

macOS 13.1

Ruby Version

ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x86_64-darwin22]

Jekyll Version

jekyll 4.3.1

GitHub Pages Version

Latest

Expected Behavior

After initializing a blank Jekyll scaffold using jekyll new . --blank, the resultant files generated should be directly compilable using jekyll serve with no errors.

This is expected behavior because the default option (generating using Minimal), jekyll new . creates a set of files that can be immediately run with jekyll serve and produce a working website scaffold on localhost with placeholder pages.

Current Behavior

Currently, running jekyll new . --blank, then immediately jekyll serve without modifying any files results in the error:

Error: expected "{".
  ╷
4 │ @import "main";
  │               ^
  ╵
  /project_dir/assets/css/main.scss 4:15  @import
  /project_dir/assets/css/main.scss 1:9   root stylesheet 
  Conversion error: Jekyll::Converters::Scss encountered an error while converting 'assets/css/main.scss':
                    expected "{".

After much digging, it turns out this is due to a naming conflict of the _sass/main.scss and assets/css/main.scss files that were generated when running jekyll new . --blank, as per this Stack Overflow question. The workaround is to rename either _sass/main.scss or assets/css/main.scss to a different name, e.g. style.scss.

That said, while the error persists on my machine, running it on other environments such as GitHub Pages yields no such error and the scaffold website compiles as expected. There doesn't appear to be anything wrong with my installation; to test the bug, I reinstalled Jekyll by the book based on the official documentation.

To clarify, the bug is to do with the template files created by jekyll new. I know that of course it's easy to rename the files, but having the command create a non-working scaffold (at least on some environments) is very frustrating for beginners, so minimally the template files should be renamed as suggested above.

Relevant log output

Configuration file: project_dir/_config.yml
            Source: project_dir
       Destination: project_dir/_site
 Incremental build: disabled. Enable with --incremental
      Generating... 
Error: expected "{".
  ╷
4 │ @import "main";
  │               ^
  ╵
  project_dir/assets/css/main.scss 4:15  @import
  project_dir/assets/css/main.scss 1:9   root stylesheet 
  Conversion error: Jekyll::Converters::Scss encountered an error while converting 'assets/css/main.scss':
                    expected "{".
                    ------------------------------------------------
      Jekyll 4.3.1   Please append `--trace` to the `serve` command 
                     for any additional information or backtrace. 
                    ------------------------------------------------
/Users/username/.gem/ruby/3.1.3/gems/jekyll-sass-converter-3.0.0/lib/jekyll/converters/scss.rb:175:in `rescue in convert': expected "{". (Jekyll::Converters::Scss::SyntaxError)
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-sass-converter-3.0.0/lib/jekyll/converters/scss.rb:159:in `convert'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/renderer.rb:105:in `block in convert'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/renderer.rb:104:in `each'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/renderer.rb:104:in `reduce'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/renderer.rb:104:in `convert'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/renderer.rb:84:in `render_document'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/renderer.rb:63:in `run'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/site.rb:578:in `render_regenerated'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/site.rb:570:in `block in render_pages'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/site.rb:569:in `each'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/site.rb:569:in `render_pages'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/site.rb:211:in `render'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/site.rb:80:in `process'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/command.rb:28:in `process_site'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/commands/build.rb:65:in `build'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/commands/build.rb:36:in `process'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/command.rb:91:in `block in process_with_graceful_fail'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/command.rb:91:in `each'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/command.rb:91:in `process_with_graceful_fail'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/commands/serve.rb:86:in `block (2 levels) in init_with_program'
        from /Users/username/.gem/ruby/3.1.3/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `block in execute'
        from /Users/username/.gem/ruby/3.1.3/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `each'
        from /Users/username/.gem/ruby/3.1.3/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `execute'
        from /Users/username/.gem/ruby/3.1.3/gems/mercenary-0.4.0/lib/mercenary/program.rb:44:in `go'
        from /Users/username/.gem/ruby/3.1.3/gems/mercenary-0.4.0/lib/mercenary.rb:21:in `program'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/exe/jekyll:15:in `<top (required)>'
        from /Users/username/.gem/ruby/3.1.3/bin/jekyll:25:in `load'
        from /Users/username/.gem/ruby/3.1.3/bin/jekyll:25:in `<main>'
/Users/username/.gem/ruby/3.1.3/gems/sass-embedded-1.57.1-x86_64-darwin/lib/sass/embedded/protofier.rb:16:in `from_proto_compile_response': expected "{". (Sass::CompileError)
        from /Users/username/.gem/ruby/3.1.3/gems/sass-embedded-1.57.1-x86_64-darwin/lib/sass/embedded.rb:208:in `compile_string'
        from /Users/username/.gem/ruby/3.1.3/gems/sass-embedded-1.57.1-x86_64-darwin/lib/sass/embedded.rb:47:in `compile_string'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-sass-converter-3.0.0/lib/jekyll/converters/scss.rb:160:in `convert'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/renderer.rb:105:in `block in convert'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/renderer.rb:104:in `each'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/renderer.rb:104:in `reduce'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/renderer.rb:104:in `convert'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/renderer.rb:84:in `render_document'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/renderer.rb:63:in `run'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/site.rb:578:in `render_regenerated'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/site.rb:570:in `block in render_pages'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/site.rb:569:in `each'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/site.rb:569:in `render_pages'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/site.rb:211:in `render'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/site.rb:80:in `process'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/command.rb:28:in `process_site'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/commands/build.rb:65:in `build'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/commands/build.rb:36:in `process'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/command.rb:91:in `block in process_with_graceful_fail'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/command.rb:91:in `each'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/command.rb:91:in `process_with_graceful_fail'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/lib/jekyll/commands/serve.rb:86:in `block (2 levels) in init_with_program'
        from /Users/username/.gem/ruby/3.1.3/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `block in execute'
        from /Users/username/.gem/ruby/3.1.3/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `each'
        from /Users/username/.gem/ruby/3.1.3/gems/mercenary-0.4.0/lib/mercenary/command.rb:221:in `execute'
        from /Users/username/.gem/ruby/3.1.3/gems/mercenary-0.4.0/lib/mercenary/program.rb:44:in `go'
        from /Users/username/.gem/ruby/3.1.3/gems/mercenary-0.4.0/lib/mercenary.rb:21:in `program'
        from /Users/username/.gem/ruby/3.1.3/gems/jekyll-4.3.1/exe/jekyll:15:in `<top (required)>'
        from /Users/username/.gem/ruby/3.1.3/bin/jekyll:25:in `load'
        from /Users/username/.gem/ruby/3.1.3/bin/jekyll:25:in `<main>'

Code Sample

(all the default files and directories created when you run jekyll new . --blank, unmodified)

The important ones:

assets/css/main.scss

---
---

@import "style";

_sass/main.scss

$backgroundColor: #ffffff;
$bodyColor: #000000;
$bodyFont: -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";

body {
  background: $backgroundColor;
  color: $bodyColor;
  font-family: $bodyFont;
}

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions