Open ngortheone opened 1 year ago
Partially answering my own question.
Some good hints were discovered here: https://github.com/phoenixframework/tailwind/blob/main/lib/tailwind.ex#L34 Later I discovered the same info here: https://hexdocs.pm/tailwind/Tailwind.html
Side note: It is a shame that github's readme and hexdocs have different content.
Nevertheless after installing tailwindcss module globally (npm install -g tailwindcss
) and setting :path
I was still getting an error:
Rebuilding...
Error: Cannot find module 'tailwindcss/plugin'
Require stack:
- /usr/home/ngor/tmp/guild/assets/tailwind.config.js
- /usr/home/ngor/.local/lib/node_modules/tailwindcss/lib/cli/build/plugin.js
- /usr/home/ngor/.local/lib/node_modules/tailwindcss/lib/cli/build/index.js
- /usr/home/ngor/.local/lib/node_modules/tailwindcss/lib/cli/index.js
- /usr/home/ngor/.local/lib/node_modules/tailwindcss/lib/cli.js
at Module._resolveFilename (node:internal/modules/cjs/loader:1070:15)
at Module._load (node:internal/modules/cjs/loader:923:27)
at Module.require (node:internal/modules/cjs/loader:1137:19)
at require (node:internal/modules/helpers:121:18)
at Object.<anonymous> (/usr/home/ngor/tmp/guild/assets/tailwind.config.js:6:16)
at Module._compile (node:internal/modules/cjs/loader:1255:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1309:10)
at Module.load (node:internal/modules/cjs/loader:1113:32)
at Module._load (node:internal/modules/cjs/loader:960:12)
at Module.require (node:internal/modules/cjs/loader:1137:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/usr/home/ngor/tmp/guild/assets/tailwind.config.js',
'/usr/home/ngor/.local/lib/node_modules/tailwindcss/lib/cli/build/plugin.js',
'/usr/home/ngor/.local/lib/node_modules/tailwindcss/lib/cli/build/index.js',
'/usr/home/ngor/.local/lib/node_modules/tailwindcss/lib/cli/index.js',
'/usr/home/ngor/.local/lib/node_modules/tailwindcss/lib/cli.js'
]
}
The missing piece of the solution was found here: https://stackoverflow.com/questions/15636367/nodejs-require-a-global-module-package
Apparently node is not looking in global location on require
, which may be obvious for node experts, but came as a surprise to me.
after setting export NODE_PATH=$(npm root -g)
I finally was able to start phx.server
Question to phoenix experts: is it possible to incorporate this trick NODE_PATH=$(npm root -g)
into the build somehow? (I.e. to avoid setting it manually, but have it as a part of mix.exs
or something ...
cc @dch -> a working solution that does not require hackery and elf patching :P
@ngortheone this is what I used, with npm-node20 package:
$ npm install --prefix assets -D tailwindcss@latest postcss@latest autoprefixer@latest @tailwindcss/forms daisyui@latest && ln -s ../assets/node_modules/.bin/tailwind _build/tailwind-freebsd-x64
for aarch64 that would be probably arm64 at the end. Does that help?
I apologize upfront for stupid question. I come from systems & backend engineering world, the world of frontend is new and frightening to me. I am trying to get started with Phoenix on FreeBSD.
I am aware of #49 , however this option has big drawback: there are are no official tailwind cli packages for FreeBSD and current package is outdated, maintained by a single person and relies on a complicated series of dirty hacks to get it working. (All thanks to convoluted build process of the tailwindcss CLI)
As I gather from the readme it is possible to use tailwindcss with nodejs:
However official tailwind documentation gives very generic guidance how to install it. Following those steps verbatim does not produce working result.
Can you please provide more detailed and tailored to phoenix steps?
I do have
node
and tailwind installed.npx tailwindcss
works. As I understandtailwind
mix dependency should not be needed, or at least should be reconfigured. I want to re-use auto-generatedtailwind.config.js
.This snippet from
config/config.ex
hints on what input/output paths should be but I would appreciate official step-by-step getting started instruction for a web monkey like me.P.S. It seems that this bit has to be adjusted to run
npx tailwind
instead...