Packages

phoenix_kit

1.2.4
1.7.211 1.7.210 1.7.209 1.7.208 1.7.207 1.7.206 1.7.205 1.7.204 1.7.203 1.7.202 1.7.201 1.7.200 1.7.199 1.7.198 1.7.197 1.7.196 1.7.194 1.7.193 1.7.192 1.7.191 1.7.190 1.7.189 1.7.187 1.7.186 1.7.185 1.7.184 1.7.183 1.7.182 1.7.181 1.7.180 1.7.179 1.7.178 1.7.177 1.7.176 1.7.175 1.7.174 1.7.173 1.7.172 1.7.171 1.7.170 1.7.169 1.7.168 1.7.167 1.7.166 1.7.165 1.7.164 1.7.162 1.7.161 1.7.160 1.7.159 1.7.157 1.7.156 1.7.155 1.7.154 1.7.153 1.7.152 1.7.151 1.7.150 1.7.149 1.7.146 1.7.145 1.7.144 1.7.143 1.7.138 1.7.133 1.7.132 1.7.131 1.7.130 1.7.128 1.7.126 1.7.125 1.7.121 1.7.120 1.7.119 1.7.118 1.7.117 1.7.116 1.7.115 1.7.114 1.7.113 1.7.112 1.7.111 1.7.110 1.7.109 1.7.108 1.7.107 1.7.106 1.7.105 1.7.104 1.7.103 1.7.102 1.7.101 1.7.100 1.7.99 1.7.98 1.7.97 1.7.96 1.7.95 1.7.94 1.7.93 1.7.92 1.7.91 1.7.90 1.7.89 1.7.88 1.7.87 1.7.86 1.7.85 1.7.84 1.7.83 1.7.82 1.7.81 1.7.80 1.7.79 1.7.78 1.7.77 1.7.76 1.7.75 1.7.74 1.7.71 1.7.70 1.7.69 1.7.66 1.7.65 1.7.64 1.7.63 1.7.62 1.7.61 1.7.59 1.7.58 1.7.57 1.7.56 1.7.55 1.7.54 1.7.53 1.7.52 1.7.51 1.7.49 1.7.44 1.7.43 1.7.42 1.7.41 1.7.39 1.7.38 1.7.37 1.7.36 1.7.34 1.7.33 1.7.31 1.7.30 1.7.29 1.7.28 1.7.27 1.7.26 1.7.25 1.7.24 1.7.23 1.7.22 1.7.21 1.7.20 1.7.19 1.7.18 1.7.17 1.7.16 1.7.15 1.7.14 1.7.13 1.7.12 1.7.11 1.7.10 1.7.9 1.7.8 1.7.7 1.7.6 1.7.5 1.7.4 1.7.3 1.7.2 1.7.1 1.7.0 1.6.20 1.6.19 1.6.18 1.6.17 1.6.16 1.6.15 1.6.14 1.6.13 1.6.12 1.6.11 1.6.10 1.6.9 1.6.8 1.6.7 1.6.6 1.6.5 1.6.4 1.6.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.2 1.3.1 1.3.0 1.2.10 1.2.9 1.2.8 1.2.7 1.2.5 1.2.4 1.2.2 1.2.1 1.2.0 1.1.0 1.0.0

A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more

Current section

Files

Jump to
phoenix_kit lib mix tasks phoenix_kit.assets.rebuild.ex
Raw

lib/mix/tasks/phoenix_kit.assets.rebuild.ex

defmodule Mix.Tasks.PhoenixKit.Assets.Rebuild do
use Mix.Task
@impl Mix.Task
@spec run([String.t()]) :: :ok
@moduledoc """
Rebuilds assets for PhoenixKit when CSS configuration changes.
This task is designed to rebuild assets when PhoenixKit CSS integration
has been modified or when daisyUI/Tailwind configuration requires updates.
## Usage
$ mix phoenix_kit.assets.rebuild
$ mix phoenix_kit.assets.rebuild --check
$ mix phoenix_kit.assets.rebuild --force
## Options
* `--check` - Only check if rebuild is needed, don't execute
* `--force` - Force rebuild even if not detected as needed
* `--verbose` - Show detailed output during process (default: true)
* `--silent` - Suppress all output except errors
## When to use
This task is automatically called by:
- `mix phoenix_kit.install` (when CSS integration is set up)
- `mix phoenix_kit.update` (when version requires asset changes)
You may need to run it manually when:
- CSS @source directives were manually modified
- Tailwind/daisyUI configuration was changed
- PhoenixKit assets are not displaying correctly
## Examples
# Check if rebuild is needed
mix phoenix_kit.assets.rebuild --check
# Force rebuild all assets
mix phoenix_kit.assets.rebuild --force
# Silent rebuild (only show errors)
mix phoenix_kit.assets.rebuild --silent
## Integration with CSS
This task works closely with CSS integration to determine when rebuilds
are needed based on:
- Changes in @source "../../deps/phoenix_kit" directives
- daisyUI plugin configuration
- PhoenixKit version updates that include CSS changes
"""
alias PhoenixKit.Install.AssetRebuild
@shortdoc "Rebuilds PhoenixKit assets when CSS configuration changes"
@switches [
check: :boolean,
force: :boolean,
verbose: :boolean,
silent: :boolean
]
@aliases [
c: :check,
f: :force,
v: :verbose,
s: :silent
]
def run(argv) do
{opts, _argv, _errors} = OptionParser.parse(argv, switches: @switches, aliases: @aliases)
# Determine verbosity
verbose =
cond do
opts[:silent] -> false
opts[:verbose] -> true
# Default to verbose
true -> true
end
if opts[:check] do
perform_check(verbose)
else
perform_rebuild(opts[:force] || false, verbose)
end
end
# Perform check-only operation
defp perform_check(verbose) do
if verbose do
IO.puts("""
🔍 Checking if PhoenixKit asset rebuild is needed...
""")
end
# Always show that rebuild is recommended for consistency
IO.puts("""
⚠️ Asset rebuild is RECOMMENDED
Reasons rebuild is recommended:
#{analyze_rebuild_reasons(verbose)}
To rebuild assets, run:
mix phoenix_kit.assets.rebuild
""")
end
# Perform actual rebuild
defp perform_rebuild(force, verbose) do
if verbose do
IO.puts("""
🎨 PhoenixKit Asset Rebuild
""")
if force do
IO.puts("Force rebuild enabled - will rebuild regardless of checks")
end
end
# Always rebuild assets - no complex checks needed
AssetRebuild.check_and_rebuild(verbose: verbose)
if verbose do
IO.puts("""
✅ PhoenixKit asset rebuild completed!
Your application should now have the latest CSS integration.
If you're running a dev server, you may need to refresh your browser.
""")
end
end
# Analyze and explain why rebuild is needed
@spec analyze_rebuild_reasons(boolean()) :: String.t()
defp analyze_rebuild_reasons(_verbose) do
reasons = collect_rebuild_reasons()
if Enum.empty?(reasons) do
"• General asset compilation recommended for optimal performance"
else
Enum.join(reasons, "\n")
end
end
# Helper function to collect rebuild reasons
@spec collect_rebuild_reasons() :: [String.t()]
defp collect_rebuild_reasons do
[
"• PhoenixKit assets are always rebuilt to ensure consistency",
"• Ensures latest Tailwind CSS and daisyUI integration",
"• Compiles CSS @source directives including PhoenixKit paths"
]
end
end