summaryrefslogtreecommitdiffstats
path: root/resources/resource_transformers/tocss
diff options
context:
space:
mode:
authorJoe Mooring <joe.mooring@veriphor.com>2023-02-23 16:23:36 -0800
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2023-02-24 15:19:21 +0100
commit2662faf61ff0240be1ee0d6c496b6b4a6ed55fb4 (patch)
tree1d18dc49f594da75ebdc7a0403aea2f7ca783d81 /resources/resource_transformers/tocss
parent271318ad787ee2442c6d553edffaa29e1d9a4cf7 (diff)
dartsass: Import CSS without extension at compile time
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
Diffstat (limited to 'resources/resource_transformers/tocss')
-rw-r--r--resources/resource_transformers/tocss/dartsass/integration_test.go69
-rw-r--r--resources/resource_transformers/tocss/dartsass/transform.go4
2 files changed, 67 insertions, 6 deletions
diff --git a/resources/resource_transformers/tocss/dartsass/integration_test.go b/resources/resource_transformers/tocss/dartsass/integration_test.go
index e7432f12b..aa71101a0 100644
--- a/resources/resource_transformers/tocss/dartsass/integration_test.go
+++ b/resources/resource_transformers/tocss/dartsass/integration_test.go
@@ -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 {
diff --git a/resources/resource_transformers/tocss/dartsass/transform.go b/resources/resource_transformers/tocss/dartsass/transform.go
index 1a5b81b47..fdf4d8ef3 100644
--- a/resources/resource_transformers/tocss/dartsass/transform.go
+++ b/resources/resource_transformers/tocss/dartsass/transform.go
@@ -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, "_")