Sha256: 1bd74570a49b91f7f8fc838722b7882f25cc31e2a0e6dc282c2d642dfffc7787

Contents?: true

Size: 1.27 KB

Versions: 2

Compression:

Stored size: 1.27 KB

Contents

# frozen_string_literal: true

# Internal: Adds all assets generated by Vite to the static_files list, so
# that they are copied over to the built site.
class Jekyll::Vite::Generator < Jekyll::Generator
  safe true
  priority :highest

  class ViteAssetFile < Jekyll::StaticFile
    # Override: Copy to the configured public_output_dir
    def cleaned_relative_path
      super.sub(
        ViteRuby.config.build_output_dir.relative_path_from(@site.source).to_s,
        ViteRuby.config.public_output_dir,
      )
    end
  end

  # Internal: Set the mode based on which command was run.
  # Builds assets with Vite only if `jekyll build` was run.
  def generate(site)
    serving = site.config['serving']
    ENV['JEKYLL_ENV'] ||= serving ? 'development' : 'production'
    generate_vite_build(site) unless serving
  end

  # Internal: Build all assets with Vite and add them to the site's static files.
  def generate_vite_build(site)
    ViteRuby.commands.build_from_task
    assets_dir = ViteRuby.config.build_output_dir.relative_path_from(site.source)
    files = Dir.chdir(ViteRuby.config.build_output_dir.to_s) {
      Dir.glob('**/*').select { |f| File.file?(f) }
    }
    site.static_files.concat(files.map { |file|
      ViteAssetFile.new(site, site.source, assets_dir, file)
    })
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
jekyll-vite-0.0.2 lib/jekyll/vite/generator.rb
jekyll-vite-0.0.1 lib/jekyll/vite/generator.rb