tailwindcss icon indicating copy to clipboard operation
tailwindcss copied to clipboard

`--watch` not observing changes done by `vi` when input file and config file are in different directories (but works with `--poll` mode)

Open kbr- opened this issue 1 year ago • 1 comments

What version of Tailwind CSS are you using?

3.4.10, tailwindcss-linux-x64 binary downloaded for the releases page.

What operating system are you using?

Linux pop-os 6.9.3-76060903-generic #202405300957~1721174657~22.04~abb7c06 SMP PREEMPT_DYNAMIC Wed J x86_64 x86_64 x86_64 GNU/Linux

Reproduction + description

You need two empty files: empty config.js file and empty input.css file; they must be in separate directories. You can execute the following sequence of bash commands to reproduce:

mkdir repro
cd repro
mkdir cfg
touch cfg/config.js
touch input.css
wget https://github.com/tailwindlabs/tailwindcss/releases/download/v3.4.10/tailwindcss-linux-x64
chmod +x tailwindcss-linux-x64
./tailwindcss-linux-x64 -c cfg/config.js -i input.css -o output.css -w

Then open the file input.css in vi and save it (:w).

Tailwind will not rebuild the file on save.

The conditions to reproduce the issue are oddly specific:

  • touch input.css causes rebuild
  • opening it with gedit and saving causes rebuild
  • if we add -p (--poll), saving in vi works (causes rebuild):
./tailwindcss-linux-x64 -c cfg/config.js -i input.css -o output.css -w -p
  • if we use config.js from the same directory as input.css, saving in vi works:
touch config.js
./tailwindcss-linux-x64 -c cfg/config.js -i input.css -o output.css -w

Why vi is needed? I'm guessing it's somehow related to the file metadata, perhaps saving in vi is not modifying some file metadata that touch or saving with another editor like gedit does, and -w is observing this metadata. I'd guess there are some other editors which make this possible to reproduce.

But why do the files have to be in different directories? No idea.

kbr- avatar Aug 31 '24 16:08 kbr-

Possible cause: https://github.com/nodejs/node-v0.x-archive/issues/3172#issuecomment-31125703

:set backupcopy=yes in vi makes the issue go away.

kbr- avatar Aug 31 '24 16:08 kbr-

Hey! Were you able to update to Tailwind CSS v4 and check if that's still an issue there?

philipp-spiess avatar Apr 11 '25 10:04 philipp-spiess

Sorry, I haven't touched frontend since September last year :)

kbr- avatar Apr 11 '25 17:04 kbr-

@kbr- Haha fair! I'm going to move this to a discussion for now then. 👍

philipp-spiess avatar May 06 '25 11:05 philipp-spiess