dartsass: Import CSS without extension at compile time - hugo - [fork] hugo port for 9front
HTML git clone git@git.drkhsh.at/hugo.git
DIR Log
DIR Files
DIR Refs
DIR Submodules
DIR README
DIR LICENSE
---
DIR commit 2662faf61ff0240be1ee0d6c496b6b4a6ed55fb4
DIR parent 271318ad787ee2442c6d553edffaa29e1d9a4cf7
HTML Author: Joe Mooring <joe.mooring@veriphor.com>
Date: Thu, 23 Feb 2023 16:23:36 -0800
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:
M resources/resource_transformers/to… | 69 +++++++++++++++++++++++++++++--
M resources/resource_transformers/to… | 4 ++--
2 files changed, 67 insertions(+), 6 deletions(-)
---
DIR diff --git 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 {
DIR diff --git 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, "_")