]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
dartsass: Import CSS without extension at compile time
authorJoe Mooring <joe.mooring@veriphor.com>
Fri, 24 Feb 2023 00:23:36 +0000 (16:23 -0800)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 24 Feb 2023 14:19:21 +0000 (15:19 +0100)
Applicable to Dart Sass only:

- Sass imports with the .css extension indicate a plain CSS @import.
- Sass imports without the .css extension are imported at compile time.

Fixes #10592

resources/resource_transformers/tocss/dartsass/integration_test.go
resources/resource_transformers/tocss/dartsass/transform.go

index e7432f12bc5cabff36bd1440f5490d16e0b948b5..aa71101a04e69de59535019d989872cccf1e5756 100644 (file)
@@ -101,14 +101,75 @@ T1: {{ $r.Content | safeHTML }}
                moo {
                  color: #fff;
                }
-               
+
                moo {
                  color: #fff;
                }
-               
+
                /* foo */`)
 }
 
+// Issue 10592
+func TestTransformImportMountedCSS(t *testing.T) {
+       t.Parallel()
+       if !dartsass.Supports() {
+               t.Skip()
+       }
+
+       files := `
+-- assets/main.scss --
+@import "import-this-file.css";
+@import "foo/import-this-mounted-file.css";
+@import "compile-this-file";
+@import "foo/compile-this-mounted-file";
+a {color: main-scss;}
+-- assets/_compile-this-file.css --
+a {color: compile-this-file-css;}
+-- assets/_import-this-file.css --
+a {color: import-this-file-css;}
+-- foo/_compile-this-mounted-file.css --
+a {color: compile-this-mounted-file-css;}
+-- foo/_import-this-mounted-file.css --
+a {color: import-this-mounted-file-css;}
+-- layouts/index.html --
+{{- $opts := dict "transpiler" "dartsass" }}
+{{- with resources.Get "main.scss" | toCSS $opts }}{{ .Content | safeHTML }}{{ end }}
+-- config.toml --
+disableKinds = ['RSS','sitemap','taxonomy','term','page','section']
+
+[[module.mounts]]
+source = 'assets'
+target = 'assets'
+
+[[module.mounts]]
+source = 'foo'
+target = 'assets/foo'
+       `
+       b := hugolib.NewIntegrationTestBuilder(
+               hugolib.IntegrationTestConfig{
+                       T:           t,
+                       TxtarString: files,
+                       NeedsOsFS:   true,
+               },
+       ).Build()
+
+       b.AssertFileContent("public/index.html", `
+               @import "import-this-file.css";
+               @import "foo/import-this-mounted-file.css";
+               a {
+                       color: compile-this-file-css;
+               }
+
+               a {
+                       color: compile-this-mounted-file-css;
+               }
+
+               a {
+                       color: main-scss;
+               }
+       `)
+}
+
 func TestTransformThemeOverrides(t *testing.T) {
        t.Parallel()
        if !dartsass.Supports() {
@@ -291,7 +352,7 @@ body {
        body {
                background: url(vars.$image) no-repeat center/cover;
                font-family: vars.$font;
-         }       
+         }
 }
 
 p {
@@ -341,7 +402,7 @@ image = "images/hero.jpg"
 body {
        body {
                background: url(vars.$image) no-repeat center/cover;
-         }       
+         }
 }
 
 p {
index 1a5b81b47c3346c3e7eb49f7bcdf72eb5726b52f..fdf4d8ef36370e571159a24cd0830e921c17b948 100644 (file)
@@ -163,9 +163,9 @@ func (t importResolver) CanonicalizeURL(url string) (string, error) {
        if strings.Contains(name, ".") {
                namePatterns = []string{"_%s", "%s"}
        } else if strings.HasPrefix(name, "_") {
-               namePatterns = []string{"_%s.scss", "_%s.sass"}
+               namePatterns = []string{"_%s.scss", "_%s.sass", "_%s.css"}
        } else {
-               namePatterns = []string{"_%s.scss", "%s.scss", "_%s.sass", "%s.sass"}
+               namePatterns = []string{"_%s.scss", "%s.scss", "_%s.sass", "%s.sass", "_%s.css", "%s.css"}
        }
 
        name = strings.TrimPrefix(name, "_")