Packages
phoenix_kit
1.7.21
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
Current section
Files
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 using standard Phoenix asset pipeline.
This task rebuilds assets using the Phoenix asset build system by trying
multiple commands in order of preference:
1. `mix assets.build` - Phoenix 1.8+ standard asset pipeline
2. `mix esbuild` and `mix tailwind` - Individual asset builders
3. `npm run build` - NPM build script fallback
## 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` (after successful installation)
- `mix phoenix_kit.update` (after successful update, unless --skip-assets)
You may need to run it manually when:
- CSS integration was manually modified
- Tailwind/daisyUI configuration was changed
- PhoenixKit assets are not displaying correctly
- After updating Phoenix asset configuration
## 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
## Asset Build Pipeline
This task uses the standard Phoenix asset pipeline to ensure compatibility
with your application's build process. It automatically detects and uses
the appropriate build commands available in your project.
"""
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