Bjørn Erik Pedersen
a795acbcd8
all: Run gofumpt -l -w .
2024-01-28 23:14:09 +01:00
Bjørn Erik Pedersen
d8c94c354a
publisher: Improve class collector for dynamic classes
...
E.g.
* AlpinesJS' :class="isTrue 'class1' : 'class2'"
* And dynamic classes with colon in them, e.g. `hover:bg-white`
2023-07-19 19:50:37 +02:00
Bjørn Erik Pedersen
ceb486f98c
Fix buildStats when tags and classes are disabled
...
Fixes #11202
2023-07-03 09:58:33 +02:00
Bjørn Erik Pedersen
5afc89f2bf
Rework the build.writeStats struct
...
Mostly to make it easier to toggle on/off this feature from the env.
See #11191
2023-07-02 13:04:11 +02:00
Bjørn Erik Pedersen
11ecea6106
Make build.writeStats a struct
...
So you can do
```toml
[build.writeStats]
tags = true
classes = true
ids = false
```
Fixes #11191
2023-07-01 15:38:32 +02:00
Bjørn Erik Pedersen
d33a7ebcc1
Make the HTML collector parsing more robust
...
Most notably better handling self-closing elements
Closes #10698
2023-02-07 09:11:02 +01:00
Bjørn Erik Pedersen
f9fc0e045b
Fix slow HTML elements collector for the pre case
...
```
name old time/op new time/op delta
ElementsCollectorWriterPre-10 25.2µs ± 1% 3.4µs ± 0% -86.54% (p=0.029 n=4+4)
name old alloc/op new alloc/op delta
ElementsCollectorWriterPre-10 624B ± 0% 142B ± 0% -77.18% (p=0.029 n=4+4)
name old allocs/op new allocs/op delta
ElementsCollectorWriterPre-10 16.0 ± 0% 6.0 ± 0% -62.50% (p=0.029 n=4+4)
```
Fixes #10698
2023-02-05 20:01:39 +01:00
Bjørn Erik Pedersen
f518b4f71e
publisher: Make the HTML element collector more robust
...
Fixes #8530
2021-05-19 20:43:49 +02:00
Bjørn Erik Pedersen
dc6b7a75ff
Revert "publisher: Make the HTML element collector more robust"
...
This reverts commit ef0f1a7269
.
2021-05-19 03:45:36 +02:00
Bjørn Erik Pedersen
3f515f0e33
Revert "publisher: Get the collector in line with the io.Writer interface"
...
This reverts commit a9bcd38181
.
2021-05-19 03:45:30 +02:00
Bjørn Erik Pedersen
a9bcd38181
publisher: Get the collector in line with the io.Writer interface
...
As in: Do not retain the input slice.
2021-05-17 19:39:40 +02:00
Bjørn Erik Pedersen
ef0f1a7269
publisher: Make the HTML element collector more robust
...
Fixes #8530
2021-05-17 17:15:32 +02:00
Bjørn Erik Pedersen
f5d3d635e6
publisher: Remove some unreachable code
2021-04-20 17:47:09 +02:00
Bjørn Erik Pedersen
ef34dd8f0e
publisher: Some performance tweaks for the HTML elements collector
2021-04-20 17:24:17 +02:00
Dirk Olbrich
bc80022e03
publisher: Exclude comment and doctype elements from writeStats
...
- Reorder code blocks
- Rename cssClassCollectorWriter to htmlElementCollectorWriter, as it just collect html element information
- Expand benchmark to test for minified and unminified content
Fixes #8396
Fixes #8417
2021-04-20 17:24:17 +02:00
Bjørn Erik Pedersen
8a308944e4
publisher: Skip script, pre and textarea content when looking for HTML elements
...
Updates #7567
2021-04-07 00:26:02 +02:00
Pavlo Matiash
b2a48dce58
Trim whitespace in elements written to hugo_stats.json
...
Fixes #7958
2021-02-01 09:32:39 +01:00
Phil Davis
04b89857e1
all: Fix minor typos
2020-12-16 12:11:32 +01:00
Bjørn Erik Pedersen
d90e37e0c6
all: Format code with gofumpt
...
See https://github.com/mvdan/gofumpt
2020-12-03 13:12:58 +01:00
Bjørn Erik Pedersen
d162bbd799
publisher: Fix memory usage in writeStats
...
```
name old time/op new time/op delta
ClassCollectorWriter-16 72.1µs ± 0% 32.3µs ± 0% -55.17% (p=0.029 n=4+4)
name old alloc/op new alloc/op delta
ClassCollectorWriter-16 85.9kB ± 0% 35.1kB ± 0% -59.16% (p=0.029 n=4+4)
name old allocs/op new allocs/op delta
ClassCollectorWriter-16 329 ± 0% 149 ± 0% -54.71% (p=0.029 n=4+4)
```
Fixes #7945
2020-11-27 09:13:16 +01:00
Bjørn Erik Pedersen
111344113b
publisher: Fix writeStats with quote inside quotes
...
Fixes #7746
2020-09-28 22:17:36 +02:00
Bjørn Erik Pedersen
00e00da233
publisher: Collect transition attributes as classes
...
Fixes #7509
2020-07-23 16:21:58 +02:00
Bjørn Erik Pedersen
c950c86b4e
publisher: Fix tag collector for nested table elements
...
Fixes #7318
2020-05-27 11:10:48 +02:00
Bjørn Erik Pedersen
c03ea2b660
Fix some missing JS class collector cases
...
Fixes #7216
2020-04-27 19:06:29 +02:00
Bjørn Erik Pedersen
f37e77f2d3
Fix class collector when running with --minify
...
Also add a related stresstest.
Fixes #7161
2020-04-21 21:00:52 +02:00
Bjørn Erik Pedersen
095bf64c99
Collect HTML elements during the build to use in PurgeCSS etc.
...
The main use case for this is to use with resources.PostProcess and resources.PostCSS with purgecss.
You would normally set it up to extract keywords from your templates, doing it from the full /public takes forever for bigger sites.
Doing the template thing misses dynamically created class names etc., and it's hard/impossible to set up in when using themes.
You can enable this in your site config:
```toml
[build]
writeStats = true
```
It will then write a `hugo_stats.json` file to the project root as part of the build.
If you're only using this for the production build, you should consider putting it below `config/production`.
You can then set it up with PostCSS like this:
```js
const purgecss = require('@fullhuman/postcss-purgecss')({
content: [ './hugo_stats.json' ],
defaultExtractor: (content) => {
let els = JSON.parse(content).htmlElements;
return els.tags.concat(els.classes, els.ids);
}
});
module.exports = {
plugins: [
require('tailwindcss'),
require('autoprefixer'),
...(process.env.HUGO_ENVIRONMENT === 'production' ? [ purgecss ] : [])
]
};
```
Fixes #6999
2020-04-09 22:57:26 +02:00