mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-14 20:33:59 +02:00
hugofs: Make FileMeta a struct
This commit started out investigating a `concurrent map read write` issue, ending by replacing the map with a struct. This is easier to reason about, and it's more effective: ``` name old time/op new time/op delta SiteNew/Regular_Deep_content_tree-16 71.5ms ± 3% 69.4ms ± 5% ~ (p=0.200 n=4+4) name old alloc/op new alloc/op delta SiteNew/Regular_Deep_content_tree-16 29.7MB ± 0% 27.9MB ± 0% -5.82% (p=0.029 n=4+4) name old allocs/op new allocs/op delta SiteNew/Regular_Deep_content_tree-16 313k ± 0% 303k ± 0% -3.35% (p=0.029 n=4+4) ``` See #8749
This commit is contained in:
@@ -118,7 +118,7 @@ func (t *buildTransformation) Transform(ctx *resources.ResourceTransformationCtx
|
||||
return errors.Errorf("inject: file %q not found", ext)
|
||||
}
|
||||
|
||||
opts.Inject[i] = m.Filename()
|
||||
opts.Inject[i] = m.Filename
|
||||
|
||||
}
|
||||
|
||||
@@ -150,7 +150,7 @@ func (t *buildTransformation) Transform(ctx *resources.ResourceTransformationCtx
|
||||
fi, err = t.c.sfs.Fs.Stat(path)
|
||||
if err == nil {
|
||||
m := fi.(hugofs.FileMetaInfo).Meta()
|
||||
path = m.Filename()
|
||||
path = m.Filename
|
||||
f, err = m.Open()
|
||||
}
|
||||
|
||||
|
@@ -143,8 +143,8 @@ func loaderFromFilename(filename string) api.Loader {
|
||||
return api.LoaderJS
|
||||
}
|
||||
|
||||
func resolveComponentInAssets(fs afero.Fs, impPath string) hugofs.FileMeta {
|
||||
findFirst := func(base string) hugofs.FileMeta {
|
||||
func resolveComponentInAssets(fs afero.Fs, impPath string) *hugofs.FileMeta {
|
||||
findFirst := func(base string) *hugofs.FileMeta {
|
||||
// This is the most common sub-set of ESBuild's default extensions.
|
||||
// We assume that imports of JSON, CSS etc. will be using their full
|
||||
// name with extension.
|
||||
@@ -158,7 +158,7 @@ func resolveComponentInAssets(fs afero.Fs, impPath string) hugofs.FileMeta {
|
||||
return nil
|
||||
}
|
||||
|
||||
var m hugofs.FileMeta
|
||||
var m *hugofs.FileMeta
|
||||
|
||||
// First the path as is.
|
||||
fi, err := fs.Stat(impPath)
|
||||
@@ -217,8 +217,8 @@ func createBuildPlugins(c *Client, opts Options) ([]api.Plugin, error) {
|
||||
// This should be a small number of elements, and when
|
||||
// in server mode, we may get stale entries on renames etc.,
|
||||
// but that shouldn't matter too much.
|
||||
c.rs.JSConfigBuilder.AddSourceRoot(m.SourceRoot())
|
||||
return api.OnResolveResult{Path: m.Filename(), Namespace: nsImportHugo}, nil
|
||||
c.rs.JSConfigBuilder.AddSourceRoot(m.SourceRoot)
|
||||
return api.OnResolveResult{Path: m.Filename, Namespace: nsImportHugo}, nil
|
||||
}
|
||||
|
||||
// Fall back to ESBuild's resolve.
|
||||
|
Reference in New Issue
Block a user