module RailsVite::Exporter

Public Instance Methods

export() click to toggle source
# File lib/rails_vite/exporter.rb, line 7
def export
  vite = Yaml.new(template: 'config/viter_template.yml', export: 'config/rails_vite.yml')

  vite.append 'entry_paths', Rails.root.join('app/views').to_s
  vite.append 'entry_paths', Rails.root.join('app/assets', 'entrypoints').to_s
  Rails::Engine.subclasses.each do |engine|
    asset_root = engine.root.join('app/assets')
    if asset_root.directory?
      vite.add 'alias', { "#{engine.engine_name}_ui" => asset_root.to_s }
    end

    vue_root = engine.root.join('app/vue')
    if vue_root.directory?
      vite.add 'alias', { "#{engine.engine_name}_vue" => vue_root.to_s }
    end

    view_root = engine.root.join('app/views')
    if view_root.directory?
      vite.append 'entry_paths', view_root.to_s
      vite.add 'alias', { "#{engine.engine_name}_view" => view_root.to_s }
    end

    entrypoint_root = engine.root.join('app/assets', 'entrypoints')
    if entrypoint_root.directory?
      vite.append 'entry_paths', entrypoint_root.to_s
    end

    # 为每个 engine 运行 yarn install
    if engine.root.join('yarn.lock').exist?
      Dir.chdir engine.root do
        $stdout.puts "\e[35minstall\e[0m #{engine.root}"
        system 'yarn install'
      end
    end
  end

  vite.dump
end