Great job @sergio!
Now that Phoenix 1.6.0-rc.0 is out, I tried to migrate my app and this other post also provided me some insights: https://www.mitchellhanberg.com/how-i-handle-static-assets-in-my-phoenix-apps.
I ended up with something like this:
package.json
"scripts": {
"deploy": "npm-run-all --parallel deploy-styles deploy-files",
"deploy-styles": "NODE_ENV=production tailwindcss -i css/app.css -o ../priv/static/assets/app.css --minify",
"deploy-files": "cpx 'static/**/*' ../priv/static",
"watch": "npm-run-all watch-styles watch-files",
"watch-styles": "tailwindcss --input=css/app.css --output=../priv/static/assets/app.css --postcss --watch",
"watch-files": "cpx 'static/**/*' ../priv/static --watch"
}
[...]
"devDependencies": {
"autoprefixer": "^10.2.6",
"npm-run-all": "^4.1.5",
"postcss-import": "^14.0.2",
"tailwindcss": "^2.2.4"
}
dev.exs
watchers: [
esbuild: {Esbuild, :install_and_run, [:default, ~w(--sourcemap=inline --watch)]},
npm: ["run", "watch", cd: Path.expand("../assets", __DIR__)]
]
PS.: Even though there’s too much configuration for my taste still, the recompilations are fast, really really fast now with esbuild.
Update: BTW: It seems you don’t need to have postcss installed at all if you are using just Tailwind for your styles. You can replace the deploy script with: NODE_ENV=production tailwindcss -i css/app.css -o ../priv/static/assets/app.css --minify