Last active 1774194376

use on FreeBSD arm64 to build a native npm-based tailwindcss CLI

dch's Avatar dch revised this gist 1774194375. Go to revision

1 file changed, 5 insertions, 1 deletion

Makefile

@@ -3,7 +3,7 @@ TAILWIND = $(BASE)/tailwind
3 3 LCSS = $(BASE)/lightningcss
4 4 NODE_ARCH != node -p "process.arch"
5 5
6 - .PHONY: all clean
6 + .PHONY: all clean deps
7 7
8 8 all: $(TAILWIND)/.cli-built
9 9
@@ -69,3 +69,7 @@ $(TAILWIND)/.cli-built: $(TAILWIND)/.node-built
69 69
70 70 clean:
71 71 rm -rf $(TAILWIND) $(LCSS)
72 +
73 + deps:
74 + doas pkg install -yr FreeBSD-ports devel/git devel/pkgconf \
75 + lang/gcc lang/python lang/rust www/npm-node24

dch's Avatar dch revised this gist 1774193374. Go to revision

No changes

dch's Avatar dch revised this gist 1774193341. Go to revision

1 file changed, 71 insertions

Makefile(file created)

@@ -0,0 +1,71 @@
1 + BASE?=$(HOME)/src
2 + TAILWIND = $(BASE)/tailwind
3 + LCSS = $(BASE)/lightningcss
4 + NODE_ARCH != node -p "process.arch"
5 +
6 + .PHONY: all clean
7 +
8 + all: $(TAILWIND)/.cli-built
9 +
10 + $(TAILWIND)/node_modules: $(TAILWIND)
11 + cd $(TAILWIND) && doas corepack enable && doas corepack install --global pnpm && pnpm install --ignore-scripts
12 +
13 + $(TAILWIND):
14 + git clone https://github.com/tailwindlabs/tailwindcss.git $@
15 +
16 + $(LCSS):
17 + git clone https://github.com/parcel-bundler/lightningcss.git $@
18 +
19 + $(TAILWIND)/.lcss-built: $(LCSS) $(TAILWIND)/node_modules
20 + LCSS_DIR=$$(ls $(TAILWIND)/node_modules/.pnpm | grep "^lightningcss@" | head -1); \
21 + LCSS_VER=$$(echo $$LCSS_DIR | sed 's/lightningcss@\([0-9.]*\).*/\1/'); \
22 + LCSS_PKGS=$(TAILWIND)/node_modules/.pnpm/$$LCSS_DIR/node_modules; \
23 + LCSS_NATIVE=$$LCSS_PKGS/lightningcss-freebsd-$(NODE_ARCH); \
24 + git -C $(LCSS) checkout v$$LCSS_VER; \
25 + cd $(LCSS) && cargo build --release -p lightningcss_node && \
26 + mkdir -p $$LCSS_NATIVE && \
27 + cp target/release/liblightningcss_node.so $$LCSS_NATIVE/lightningcss.freebsd-$(NODE_ARCH).node && \
28 + printf '{"name":"lightningcss-freebsd-$(NODE_ARCH)","version":"%s","main":"lightningcss.freebsd-$(NODE_ARCH).node"}\n' $$LCSS_VER \
29 + > $$LCSS_NATIVE/package.json && \
30 + node -e "require('$$LCSS_PKGS/lightningcss')" && \
31 + touch $@
32 +
33 + $(TAILWIND)/.oxide-built: $(TAILWIND)/node_modules
34 + cd $(TAILWIND) && cargo build --release -p tailwind-oxide && \
35 + cp target/release/libtailwind_oxide.so \
36 + "$(TAILWIND)/crates/node/tailwindcss-oxide.freebsd-$(NODE_ARCH).node" && \
37 + cd $(TAILWIND)/crates/node && pnpm run build:platform && \
38 + touch $@
39 +
40 + $(TAILWIND)/.parcel-built: $(TAILWIND)/node_modules
41 + for dir in $$(ls -d $(TAILWIND)/node_modules/.pnpm/@parcel+watcher@*/node_modules/@parcel/watcher); do \
42 + WATCHER_VER=$$(node -p "require('$$dir/package.json').version"); \
43 + WATCHER_NATIVE=$$dir/../watcher-freebsd-$(NODE_ARCH); \
44 + rm -rf $$dir/build; \
45 + cd $$dir && node-gyp rebuild --python=python3.13 || true; \
46 + mkdir -p $$WATCHER_NATIVE; \
47 + cp $$dir/build/Release/watcher.node $$WATCHER_NATIVE/; \
48 + printf '{"name":"@parcel/watcher-freebsd-$(NODE_ARCH)","version":"%s","main":"watcher.node"}\n' $$WATCHER_VER \
49 + > $$WATCHER_NATIVE/package.json; \
50 + node -e "require('$$dir')" || true; \
51 + done && touch $@
52 +
53 + $(TAILWIND)/.pkg-fixed: $(TAILWIND)
54 + sed -i.bak 's|"import": "./src/index.ts"|"import": "./dist/lib.mjs"|' \
55 + $(TAILWIND)/packages/tailwindcss/package.json && \
56 + touch $@
57 +
58 + $(TAILWIND)/.tailwindcss-built: $(TAILWIND)/.pkg-fixed $(TAILWIND)/.lcss-built
59 + cd $(TAILWIND)/packages/tailwindcss && pnpm run build && \
60 + touch $@
61 +
62 + $(TAILWIND)/.node-built: $(TAILWIND)/.tailwindcss-built $(TAILWIND)/.oxide-built $(TAILWIND)/.parcel-built
63 + cd $(TAILWIND)/packages/@tailwindcss-node && pnpm run build && \
64 + touch $@
65 +
66 + $(TAILWIND)/.cli-built: $(TAILWIND)/.node-built
67 + cd $(TAILWIND)/packages/@tailwindcss-cli && pnpm run build && \
68 + touch $@
69 +
70 + clean:
71 + rm -rf $(TAILWIND) $(LCSS)
Newer Older