Class: Importmap::Node::Installer

Inherits:
Object
  • Object
show all
Defined in:
lib/importmap/node/installer.rb

Constant Summary collapse

JS_DEST =
'vendor/javascript'
CONFIG_FILE =
'config/importmap_node.json'

Instance Method Summary collapse

Constructor Details

#initialize(root: Rails.root) ⇒ Installer



12
13
14
15
16
17
# File 'lib/importmap/node/installer.rb', line 12

def initialize(root: Rails.root)
  @root         = Pathname.new(root)
  @node_modules = @root.join('node_modules')
  @importmap    = @root.join('config', 'importmap.rb')
  @config_file  = @root.join(CONFIG_FILE)
end

Instance Method Details

#install(package) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/importmap/node/installer.rb', line 19

def install(package)
  yarn_add(package)

  pkg_name = resolve_package_name(package)
  pkg_meta = read_package_meta(pkg_name)
  js_files = vendor_js(pkg_name, pkg_meta)
  pin_importmap(pkg_name, js_files)
  record_package(package)

  summarize(pkg_name, js_files)
end

#uninstall(package) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/importmap/node/installer.rb', line 31

def uninstall(package)
  pkg_name = resolve_package_name(package)
  pkg_meta = read_package_meta(pkg_name)
  js_files = vendored_js_files(pkg_name, pkg_meta)

  yarn_remove(pkg_name)
  delete_files(JS_DEST, js_files)
  unpin_importmap(pkg_name)
  unrecord_package(package)

  summarize_removal(pkg_name, js_files)
end

#updateObject



44
45
46
47
48
49
50
51
52
53
# File 'lib/importmap/node/installer.rb', line 44

def update
  packages = load_packages
  if packages.empty?
    puts "No packages tracked in #{CONFIG_FILE}."
    return
  end
  yarn_up_dependencies
  puts "Re-vendoring #{packages.size} package(s)..."
  packages.each { |pkg| revendor(pkg) }
end