Sha256: 8e379bd9654e42e13a9c37269ed2a9bea54546c9650d1a0ad805b79144ffee10

Contents?: true

Size: 1.83 KB

Versions: 19

Compression:

Stored size: 1.83 KB

Contents

# frozen_string_literal: true

# rubocop:disable all

say_status :purgecss, "Installing PurgeCSS"

run "yarn add -D purgecss"

create_builder "purgecss_builder.rb" do
  <<~RUBY
    class PurgeCSS < SiteBuilder
      def build
        unless config[:watch] # don't run in "watch mode"
          hook :site, :post_write do
            purgecss_file = site.in_root_dir("purgecss.config.js")
            unless File.exist?(purgecss_file)
              config_js = <<~PURGE
                module.exports = {
                  content: ['frontend/javascript/*.js','./output/**/*.html'],
                  output: "./output/_bridgetown/static/css"
                }
              PURGE
              File.write(purgecss_file, config_js.strip)
            end
            manifest_file = site.in_root_dir(".bridgetown-webpack", "manifest.json")
            if File.exist?(manifest_file)
              manifest = JSON.parse(File.read(manifest_file))
              css_file = manifest["main.css"].split("/").last
              css_path = ["output", "_bridgetown", "static", "css", css_file].join("/")
              Bridgetown.logger.info "PurgeCSS", "Purging \#{css_file}"
              oldsize = File.stat(css_path).size / 1000
              system "./node_modules/.bin/purgecss -c purgecss.config.js -css \#{css_path}"
              newsize = File.stat(css_path).size / 1000
              if newsize < oldsize
                Bridgetown.logger.info "PurgeCSS", "Done! File size reduced from \#{oldsize}kB to \#{newsize}kB"
              else
                Bridgetown.logger.info "PurgeCSS", "Done. No apparent change in file size (\#{newsize}kB)."
              end
            end
          end
        end
      end
    end
  RUBY
end

say_status :purgecss, "All set! Open plugins/builders/purgecss_builder.rb if you'd like to customize the PurgeCSS config."

# rubocop:enable all

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
bridgetown-core-1.0.0.alpha6 lib/bridgetown-core/configurations/purgecss.rb
bridgetown-core-1.0.0.alpha5 lib/bridgetown-core/configurations/purgecss.rb
bridgetown-core-0.21.5 lib/bridgetown-core/configurations/purgecss.rb
bridgetown-core-1.0.0.alpha4 lib/bridgetown-core/configurations/purgecss.rb
bridgetown-core-1.0.0.alpha3 lib/bridgetown-core/configurations/purgecss.rb
bridgetown-core-1.0.0.alpha2 lib/bridgetown-core/configurations/purgecss.rb
bridgetown-core-1.0.0.alpha1 lib/bridgetown-core/configurations/purgecss.rb
bridgetown-core-0.21.4 lib/bridgetown-core/configurations/purgecss.rb
bridgetown-core-0.21.3 lib/bridgetown-core/configurations/purgecss.rb
bridgetown-core-0.21.2 lib/bridgetown-core/configurations/purgecss.rb
bridgetown-core-0.21.1 lib/bridgetown-core/configurations/purgecss.rb
bridgetown-core-0.21.0 lib/bridgetown-core/configurations/purgecss.rb
bridgetown-core-0.21.0.beta4 lib/bridgetown-core/configurations/purgecss.rb
bridgetown-core-0.21.0.beta3 lib/bridgetown-core/configurations/purgecss.rb
bridgetown-core-0.21.0.beta2 lib/bridgetown-core/configurations/purgecss.rb
bridgetown-core-0.21.0.beta1 lib/bridgetown-core/configurations/purgecss.rb
bridgetown-core-0.20.0 lib/bridgetown-core/configurations/purgecss.rb
bridgetown-core-0.19.3 lib/bridgetown-core/configurations/purgecss.rb
bridgetown-core-0.19.2 lib/bridgetown-core/configurations/purgecss.rb