Add HUGO_PUBLISHDIR to the Node environment

So you can do  `process.env.HUGO_PUBLISHDIR` in your `postcss.config.js` to figure out where Hugo publishes
its files.

Note that the value will always be an absolute file path and will point to a directory on disk even when running `hugo server` in memory mode.

If you write to this folder from PostCSS when running the server, you could run the server with one of these flags:

```
hugo server --renderToDisk
hugo server --renderStaticToDisk
```

Fixes #10554
This commit is contained in:
Bjørn Erik Pedersen
2022-12-22 09:43:53 +01:00
parent 4989da653d
commit 59af05cabc
5 changed files with 38 additions and 2 deletions

View File

@@ -85,6 +85,7 @@ Styles Content: Len: {{ len $styles.Content }}|
}
-- postcss.config.js --
console.error("Hugo Environment:", process.env.HUGO_ENVIRONMENT );
console.error("Hugo PublishDir:", process.env.HUGO_PUBLISHDIR );
// https://github.com/gohugoio/hugo/issues/7656
console.error("package.json:", process.env.HUGO_FILE_PACKAGE_JSON );
console.error("PostCSS Config File:", process.env.HUGO_FILE_POSTCSS_CONFIG_JS );
@@ -118,8 +119,6 @@ func TestTransformPostCSS(t *testing.T) {
files := repl.Replace(postCSSIntegrationTestFiles)
fmt.Println("===>", s, files)
b := hugolib.NewIntegrationTestBuilder(
hugolib.IntegrationTestConfig{
T: c,
@@ -135,6 +134,10 @@ Styles RelPermalink: /foo/css/styles.css
Styles Content: Len: 770917|
`)
if s == "never" {
b.AssertLogContains("Hugo Environment: production")
b.AssertLogContains("Hugo PublishDir: " + filepath.Join(tempDir, "public"))
}
}
}