123456789_123456789_123456789_123456789_123456789_

Module: Rails::Generators::JsPackageManager

Do not use. This module is for internal use only.
Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Included In:
Defined in: railties/lib/rails/generators/js_package_manager.rb

Constant Summary

  • MANAGERS =
    # File 'railties/lib/rails/generators/js_package_manager.rb', line 8
    {
      bun: {
        add: "bun add %s",
        install: "bun install --frozen-lockfile",
        lockfile: "bun.lockb",
        audit: nil
      },
      pnpm: {
        add: "pnpm add %s",
        install: "pnpm install --frozen-lockfile",
        lockfile: "pnpm-lock.yaml",
        audit: "pnpm audit"
      },
      npm: {
        add: "npm install %s",
        install: "npm ci",
        lockfile: "package-lock.json",
        audit: "npm audit"
      },
      yarn: {
        add: "yarn add %s",
        install: "yarn install --immutable",
        lockfile: "yarn.lock",
        audit: "yarn audit"
      }
    }.freeze

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Class Method Details

.detect(root)

[ GitHub ]

  
# File 'railties/lib/rails/generators/js_package_manager.rb', line 35

def self.detect(root)
  if root.join("bun.lockb").exist? || root.join("bun.config.js").exist?
    :bun
  elsif root.join("pnpm-lock.yaml").exist?
    :pnpm
  elsif root.join("package-lock.json").exist?
    :npm
  else
    :yarn
  end
end

Instance Attribute Details

#using_js_runtime?Boolean (readonly)

[ GitHub ]

  
# File 'railties/lib/rails/generators/js_package_manager.rb', line 51

def using_js_runtime?
  @using_js_runtime ||= package_json_path.exist?
end

Instance Method Details

#package_add_command(package)

[ GitHub ]

  
# File 'railties/lib/rails/generators/js_package_manager.rb', line 55

def package_add_command(package)
  MANAGERS.dig(package_manager, :add) % package
end

#package_install_command

[ GitHub ]

  
# File 'railties/lib/rails/generators/js_package_manager.rb', line 59

def package_install_command
  MANAGERS.dig(package_manager, :install)
end

#package_json_path (private)

[ GitHub ]

  
# File 'railties/lib/rails/generators/js_package_manager.rb', line 72

def package_json_path
  project_root.join("package.json")
end

#package_lockfile

[ GitHub ]

  
# File 'railties/lib/rails/generators/js_package_manager.rb', line 63

def package_lockfile
  MANAGERS.dig(package_manager, :lockfile)
end

#package_manager

[ GitHub ]

  
# File 'railties/lib/rails/generators/js_package_manager.rb', line 47

def package_manager
  @package_manager ||= JsPackageManager.detect(project_root)
end

#project_root (private)

[ GitHub ]

  
# File 'railties/lib/rails/generators/js_package_manager.rb', line 68

def project_root
  Pathname(respond_to?(:destination_root) ? destination_root : Dir.pwd)
end