hugo/hugolib
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
..
assets/images
filesystems Add basic "post resource publish support" 2020-04-07 21:59:20 +02:00
paths
testdata
testsite
404_test.go Fix crashes for 404 in IsAncestor etc. 2020-02-22 13:36:04 +01:00
alias.go Introduce a tree map for all content 2020-02-18 09:49:42 +01:00
alias_test.go
cascade_test.go Introduce a tree map for all content 2020-02-18 09:49:42 +01:00
case_insensitive_test.go
collections.go
collections_test.go
config.go
config_test.go
configdir_test.go
content_map.go Fix _build.list.local logic 2020-03-24 12:47:42 +01:00
content_map_page.go Fix _build.list.local logic 2020-03-24 12:47:42 +01:00
content_map_test.go Fix IsDescendant/IsAncestor for overlapping section names 2020-03-26 16:11:36 +01:00
content_render_hooks_test.go Fix handling of HTML files without front matter 2020-03-09 15:01:55 +01:00
datafiles_test.go
disableKinds_test.go Fix _build.list.local logic 2020-03-24 12:47:42 +01:00
embedded_shortcodes_test.go
embedded_templates_test.go
fileInfo.go
fileInfo_test.go
gitinfo.go
hugo_modules_test.go Introduce a tree map for all content 2020-02-18 09:49:42 +01:00
hugo_sites.go Collect HTML elements during the build to use in PurgeCSS etc. 2020-04-09 22:57:26 +02:00
hugo_sites_build.go Collect HTML elements during the build to use in PurgeCSS etc. 2020-04-09 22:57:26 +02:00
hugo_sites_build_errors_test.go
hugo_sites_build_test.go Introduce a tree map for all content 2020-02-18 09:49:42 +01:00
hugo_sites_multihost_test.go
hugo_sites_rebuild_test.go Fix rebuild logic when editing template using a base template 2020-02-28 14:14:55 +01:00
hugo_smoke_test.go
image_test.go
language_content_dir_test.go
menu_test.go
minify_publisher_test.go
multilingual.go
page.go Allow headless bundles to list pages via $page.Pages and $page.RegularPages 2020-03-20 18:28:55 +01:00
page__common.go Add basic "post resource publish support" 2020-04-07 21:59:20 +02:00
page__content.go Fix handling of HTML files without front matter 2020-03-09 15:01:55 +01:00
page__data.go Introduce a tree map for all content 2020-02-18 09:49:42 +01:00
page__menus.go
page__meta.go Fix _build.list.local logic 2020-03-24 12:47:42 +01:00
page__new.go Add basic "post resource publish support" 2020-04-07 21:59:20 +02:00
page__output.go Introduce a tree map for all content 2020-02-18 09:49:42 +01:00
page__paginator.go hugolib: Fix 2 Paginator.Pages taxonomy regressions 2020-02-20 14:13:04 +01:00
page__paths.go Introduce a tree map for all content 2020-02-18 09:49:42 +01:00
page__per_output.go Fix handling of HTML files without front matter 2020-03-09 15:01:55 +01:00
page__position.go
page__ref.go
page__tree.go Fix IsDescendant/IsAncestor for overlapping section names 2020-03-26 16:11:36 +01:00
page_kinds.go Introduce a tree map for all content 2020-02-18 09:49:42 +01:00
page_permalink_test.go
page_test.go Introduce a tree map for all content 2020-02-18 09:49:42 +01:00
page_unwrap.go
page_unwrap_test.go
pagebundler_test.go Introduce a tree map for all content 2020-02-18 09:49:42 +01:00
pagecollections.go Fix ambigous error on site.GetPage 2020-03-09 16:11:50 +01:00
pagecollections_test.go Add .RegularPagesRecursive 2020-03-16 17:37:36 +01:00
pages_capture.go hugolib: Fix error handling in page collector 2020-03-02 11:07:09 +01:00
pages_capture_test.go Introduce a tree map for all content 2020-02-18 09:49:42 +01:00
pages_language_merge_test.go
pages_process.go Introduce a tree map for all content 2020-02-18 09:49:42 +01:00
pages_test.go
paginator_test.go
permalinker.go
prune_resources.go
resource_chain_test.go Add basic "post resource publish support" 2020-04-07 21:59:20 +02:00
robotstxt_test.go
rss_test.go
shortcode.go Fix handling of HTML files without front matter 2020-03-09 15:01:55 +01:00
shortcode_page.go
shortcode_test.go Fix goldmark toc rendering 2020-02-22 18:06:30 +01:00
site.go Fix cache reset for a page's collections on server live reload 2020-03-23 23:14:39 +01:00
site_benchmark_new_test.go Add Page.GetTerms 2020-02-19 14:52:23 +01:00
site_output.go Handle disabled RSS even if it's defined in outputs 2020-02-19 09:08:31 +01:00
site_output_test.go Handle disabled RSS even if it's defined in outputs 2020-02-19 09:08:31 +01:00
site_render.go Add build.UseResourceCacheWhen 2020-03-03 13:29:58 +01:00
site_sections.go
site_sections_test.go Introduce a tree map for all content 2020-02-18 09:49:42 +01:00
site_stats_test.go
site_test.go Collect HTML elements during the build to use in PurgeCSS etc. 2020-04-09 22:57:26 +02:00
site_url_test.go
siteJSONEncode_test.go
sitemap_test.go
taxonomy.go
taxonomy_test.go Fix GetTerms nil pointer 2020-03-20 14:35:41 +01:00
template_test.go Fix handling of HTML files without front matter 2020-03-09 15:01:55 +01:00
testhelpers_test.go Allow headless bundles to list pages via $page.Pages and $page.RegularPages 2020-03-20 18:28:55 +01:00
translations.go Introduce a tree map for all content 2020-02-18 09:49:42 +01:00