diff options
Diffstat (limited to 'commands/commandeer.go')
-rw-r--r-- | commands/commandeer.go | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/commands/commandeer.go b/commands/commandeer.go index bf42501e0..07181f244 100644 --- a/commands/commandeer.go +++ b/commands/commandeer.go @@ -92,6 +92,7 @@ type commandeer struct { languagesConfigured bool languages langs.Languages doLiveReload bool + renderStaticToDisk bool fastRenderMode bool showErrorInBrowser bool wasError bool @@ -368,8 +369,9 @@ func (c *commandeer) loadConfig() error { } createMemFs := config.GetBool("renderToMemory") + c.renderStaticToDisk = config.GetBool("renderStaticToDisk") - if createMemFs { + if createMemFs && !c.renderStaticToDisk { // Rendering to memoryFS, publish to Root regardless of publishDir. config.Set("publishDir", "/") } @@ -380,6 +382,14 @@ func (c *commandeer) loadConfig() error { if c.destinationFs != nil { // Need to reuse the destination on server rebuilds. fs.Destination = c.destinationFs + } else if createMemFs && c.renderStaticToDisk { + // Writes the dynamic output on memory, + // while serve others directly from publishDir + publishDir := config.GetString("publishDir") + writableFs := afero.NewBasePathFs(afero.NewMemMapFs(), publishDir) + publicFs := afero.NewOsFs() + fs.Destination = afero.NewCopyOnWriteFs(afero.NewReadOnlyFs(publicFs), writableFs) + fs.DestinationStatic = publicFs } else if createMemFs { // Hugo writes the output to memory instead of the disk. fs.Destination = new(afero.MemMapFs) @@ -397,11 +407,13 @@ func (c *commandeer) loadConfig() error { changeDetector.PrepareNew() fs.Destination = hugofs.NewHashingFs(fs.Destination, changeDetector) + fs.DestinationStatic = hugofs.NewHashingFs(fs.DestinationStatic, changeDetector) c.changeDetector = changeDetector } if c.Cfg.GetBool("logPathWarnings") { fs.Destination = hugofs.NewCreateCountingFs(fs.Destination) + fs.DestinationStatic = hugofs.NewCreateCountingFs(fs.DestinationStatic) } // To debug hard-to-find path issues. |