postcss-cli icon indicating copy to clipboard operation
postcss-cli copied to clipboard

--watch mode doesn't pick up new files

Open JoshuaKGoldberg opened this issue 8 years ago • 12 comments

Running postcss -u stylelint -u postcss-reporter --no-map --watch -d ./src ./src/**/*.css in a directory structure with src/index.css:

  • Changes to src/index.css are picked up fine
  • Adding src/new.css and then modifying it doesn't get picked up

Is this by design? Can it be fixed?

JoshuaKGoldberg avatar Oct 20 '17 20:10 JoshuaKGoldberg

That’s a bug. We’re only watching for the change event; we should watch for the add event as well.

PR welcome!

RyanZim avatar Oct 20 '17 20:10 RyanZim

So I'm looking into this use case in combination with PurgeCSS, and I get the feeling that plugins would also be helped by being able to add globs that need watching? For example if I add a new template file Browsersync will automatically reload the page, but since PostCSS does not detect the change I won't be able to use previously purged rules without restarting PostCSS.

stefanfisk avatar Oct 21 '18 12:10 stefanfisk

Plugins can pass new files that need watching via the dependency message. postcss-import uses it, though I'm not sure what other plugins do.

RyanZim avatar Oct 22 '18 14:10 RyanZim

Yep, for existing files that works. The use case I was referring to is a bit different, as the plugin might have it's own globs that should be watched for add events. As far as I understand plugins have no way of triggering a new build on their own?

stefanfisk avatar Oct 22 '18 14:10 stefanfisk

Ah, no.

RyanZim avatar Oct 22 '18 16:10 RyanZim

It would seem like the original issue of the --watch mode doesn't pick up new files is still relevant.

I would think that another issue/pr would be created for plugins being able to set their own dependencies and re-triggering builds, but that this issue could be closed by listing for the add/delete event in addition to change event. Is that correct?

I would much appreciate this issue being fixed. Thanks

joeljeske avatar Jul 01 '19 19:07 joeljeske

@joeljeske It could be fixed by listening for the add event. Fixing this is non-trivial, I attempted it once and never completed it due to the complexity.

I am not paid for my work here, and am not personally affected by this bug, so this will most likely remain open until someone in the community steps up and does the work needed to fix this.

RyanZim avatar Jul 01 '19 19:07 RyanZim

Awesome, thanks for the quick response. Hopefully I will get a chance to look at this sometime soon.

joeljeske avatar Jul 01 '19 19:07 joeljeske

If you don't mind using another dependency, I find using watch to work just fine. e.g

npm install --save-dev watch
scripts: {
   "css": "postcss style.css -o bin/style.css",
   "css:watch" "watch 'npm run css'"
}

jamesaucode avatar Aug 28 '19 19:08 jamesaucode

This should be fixed by #383

1st8 avatar Aug 27 '21 22:08 1st8

@1st8 No, it still doesn't pick up new files in the given directory; it just scans the directory for files that currently exist, and watches them.

RyanZim avatar Aug 30 '21 14:08 RyanZim

Actually, sorry, I was wrong. It watches the directory correctly. However, this original issue still isn't fixed; we don't detect new files specified in the original glob passed on the CLI.

RyanZim avatar Aug 30 '21 16:08 RyanZim