Class: Opal::Rails::BuilderRunner

Inherits:
Object
  • Object
show all
Defined in:
lib/opal/rails/builder_runner.rb

Instance Method Summary collapse

Constructor Details

#initialize(config:, builder_class: Opal::Builder) ⇒ BuilderRunner

Returns a new instance of BuilderRunner.



9
10
11
12
# File 'lib/opal/rails/builder_runner.rb', line 9

def initialize(config:, builder_class: Opal::Builder)
  @config = config
  @builder_class = builder_class
end

Instance Method Details

#build(entrypoints:) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/opal/rails/builder_runner.rb', line 14

def build(entrypoints:)
  with_opal_config do
    outputs = []
    dependencies = {}

    FileUtils.mkdir_p(build_path)

    entrypoints.each_pair do |logical_name, relative_source_file|
      builder = build_entrypoint(relative_source_file)
      js_output = "#{logical_name}.js"

      write_output(js_output, compiled_source_for(builder, js_output))
      outputs << js_output

      if source_map_enabled?
        map_output = "#{js_output}.map"
        write_output(map_output, builder.source_map.to_json)
        outputs << map_output
      end

      dependencies[logical_name] = builder.dependent_files
    end

    {
      outputs: outputs,
      dependencies: dependencies
    }
  end
end