Deploying SASS with Phoenix 1.7 & esbuild using Bulma & SASS

Deploying SASS with Phoenix 1.7 & esbuild using Bulma & SASS

How could you use SASS with Phoenix 1.7, Bulma and esbuild?

Start with your mix.exs to make sure assets get built in priv/static/assets:

defp aliases do
[
"ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"],
"ecto.reset": ["ecto.drop", "ecto.setup"],
test: ["ecto.create --quiet", "ecto.migrate", "start_stripe_mock", "test"],
"assets.deploy": [
"esbuild default --minify",
"sass default --no-source-map --style=compressed",
"phx.digest"
]
]
end

This is assuming that your CSS and JS are built separately with dart_sass and esbuild respectively.

The question becomes, what do I need to do to make sure CSS assets are built when I deploy? (or make sure they get deployed with the app?)

One example that helps is Gigalixir's Magenta example.

The key in the above example is the assets/package.json file. It calls mix assets deploy when npm deploy is called.

So your .json would look like:

/assets/package.json:

{
"scripts": {
"deploy": "cd .. && mix assets.deploy && rm -f _build/esbuild"
}
}

and mix.exs to build the sass assets:

defp aliases do
[
...
"assets.deploy": [
"esbuild default --minify",
"sass default --no-source-map --style=compressed",
"phx.digest"
]
]
end

As always, if you hit any issues, we're one email away to help. Just write us at Gigalixir Elixir Support.

High-Performance Hosting for Modern Apps.

Stop fighting generic cloud infrastructure.

Whether you’re working with Elixir, Python, or Node.js, get the specialized support and performance your application deserves.