mirror of
https://github.com/mastodon/mastodon.git
synced 2026-08-17 07:57:36 -05:00
89 lines
3.3 KiB
Ruby
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
|