Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/lucky.cr
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ require "./lucky/response"
require "./lucky/cookies/*"
require "./lucky/secure_headers/*"
require "./lucky/route_helper"
require "./lucky/js_bundlers/*"
require "./lucky/*"
require "./lucky/paginator/paginator"
require "./lucky/paginator/*"
Expand Down
2 changes: 2 additions & 0 deletions src/lucky/js_bundlers/base_bundler.cr
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
class Lucky::JSBundlers::BaseJSBundler
end
9 changes: 9 additions & 0 deletions src/lucky/js_bundlers/bun_bundler.cr
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class Lucky::JSBundlers::BunBundler < Lucky::JSBundlers::BaseJSBundler
def self.install_command
"bun install"
end

def self.run_command
"bun run"
end
end
9 changes: 9 additions & 0 deletions src/lucky/js_bundlers/yarn_bundler.cr
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class Lucky::JSBundlers::YarnBundler < Lucky::JSBundlers::BaseJSBundler
def self.install_command
"yarn install"
end

def self.run_command
"yarn run"
end
end
17 changes: 17 additions & 0 deletions src/lucky/server_settings.cr
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,23 @@ module Lucky::ServerSettings
settings["extra_watch_paths"]?.try(&.as_a.map(&.as_s)) || [] of String
end

def js_bundler : Lucky::JsBundlers::Base
if settings["js_bundler"]?
case settings["js_bundler"].as_s
when "bun"
Lucky::JsBundlers::BunBundler.new
when "npm"
Lucky::JsBundlers::NpmBundler.new
when "yarn"
Lucky::JsBundlers::YarnBundler.new
else
raise "Unknown JS bundler: #{settings["js_bundler"].as_s}"
end
else
Lucky::JsBundlers::Esbuild.new # Default to esbuild if not specified
end
end

@@__settings : YAML::Any? = nil

private def settings : YAML::Any
Expand Down
16 changes: 14 additions & 2 deletions tasks/watch.cr
Original file line number Diff line number Diff line change
Expand Up @@ -110,10 +110,22 @@ module LuckySentry
@options = ["-c", "bs-config.js", "--port", Lucky::ServerSettings.reload_port, "-p", host_url].join(" ")
end

def js_bundler : Lucky::JsBundlers::Base
if File.exist?("yarn.lock")
"yarn"
elsif File.exist?("package-lock.json")
"npm"
elsif File.exist?("bun.lockb")
"bun"
else
raise "Unknown JS bundler: #{settings["js_bundler"].as_s}"
end
end

def start : Nil
spawn do
Process.run \
"RUNNING_IN_BROWSERSYNC=true yarn run browser-sync start #{@options}",
"RUNNING_IN_BROWSERSYNC=true #{js_bundler} run browser-sync start #{@options}",
output: STDOUT,
error: STDERR,
shell: true
Expand All @@ -124,7 +136,7 @@ module LuckySentry
def reload : Nil
if running?
Process.run \
"yarn run browser-sync reload --port #{Lucky::ServerSettings.reload_port}",
"#{js_bundler} run browser-sync reload --port #{Lucky::ServerSettings.reload_port}",
output: STDOUT,
error: STDERR,
shell: true
Expand Down