Files
mastodon/lib/vite/config.rb

89 lines
3.3 KiB
Ruby

# frozen_string_literal: true
module Vite
# Main configuration options to integrate with Vite:
# - host: Main host for Vite's dev server. Default: localhost
# - port: Main port for Vite's dev server. Default: 5173
# - https: Whether to use HTTPS to connect to the dev server or not. Default: false
# - base_path: The prefix path added to the assets. Default: /packs-dev/
# - tag_strategies: How to generate javascript and stylesheet tags in views. Possible values are:
# * dev_server: Generate tags linking directly to the dev server through an internal proxy
# * manifest: Generate tags using assets listed in Vite's manifest files
# Default: [:dev_server, :manifest]
# - manifest_path: Where the manifest file is located. Default: public/packs-dev/.vite/manifest.json
# - manifest_assets_path: Where the manifest-assets file is located. Default: public/packs-dev/.vite/manifest-assets.json
# - auto_build: Whether to automatically build assets or not. This is useful for tess. Default: false
# - build_command: How to build assets when auto_build is enabled. Default: 'yarn build:development'
# - out_dir: Output dir for built assets. Default: 'public/packs-dev'
# - cache_dir: Vite's build cache path. Default: 'node_modules/.vite'
# - logger: Main logger instance for other Vite classes. Default: Logger.new($stdout)
class Config
attr_accessor :host,
:port,
:https,
:base_path,
:tag_strategies,
:manifest_path,
:manifest_assets_path,
:auto_build,
:build_command,
:out_dir,
:cache_dir,
:logger
def initialize(cnf = nil)
@host = 'localhost'
@port = 5173
@https = false
@base_path = '/packs-dev/'
@tag_strategies = [:dev_server, :manifest]
@manifest_path = 'public/packs-dev/.vite/manifest.json'
@manifest_assets_path = 'public/packs-dev/.vite/manifest-assets.json'
@auto_build = false
@build_command = 'yarn build:development'
@out_dir = 'public/packs-dev'
@cache_dir = 'node_modules/.vite'
@logger = Logger.new($stdout)
copy_from(cnf) unless cnf.nil?
end
def https?
https
end
def protocol
https? ? 'https' : 'http'
end
def backend
"#{protocol}://#{host}:#{port}"
end
def auto_build?
auto_build
end
def copy_from(other)
self.host = other[:host] unless other[:host].nil?
self.port = other[:port] unless other[:port].nil?
self.https = other[:https] unless other[:https].nil?
self.base_path = other[:base_path] unless other[:base_path].nil?
self.tag_strategies = other[:tag_strategies].map(&:to_sym) unless other[:tag_strategies].nil?
self.manifest_path = other[:manifest_path] unless other[:manifest_path].nil?
self.manifest_assets_path = other[:manifest_assets_path] unless other[:manifest_assets_path].nil?
self.out_dir = other[:out_dir] unless other[:out_dir].nil?
self.cache_dir = other[:cache_dir] unless other[:cache_dir].nil?
self.auto_build = other[:auto_build] unless other[:auto_build].nil?
self.build_command = other[:build_command] unless other[:build_command].nil?
end
end
end