Run package.json scripts upon any file changes in a folder
This article explains how to make a package.json script re-run whenever a file in a folder changes.
My practical problem: I want to automatically regenerate the CSS, going through a PostCSS pipeline, upon file changes.
The approach I describe will work for any kind of automatic file and folder watching, not just for this specific case.
I have this script in action, which I run using yarn build:css:
"scripts": {
"build:css": "postcss src/tailwind.css -o static/dist/tailwind.css",
}
and I want to re-run it whenever something changes in the layouts folder, which contains all the HTML files that build up my site.
If you’re familiar with Tailwind, it creates a slightly big CSS files with all the things you might need, and you can optimize it by removing any class you don’t use.
Every time I change something in there, I want to regenerate the CSS, and trigger the purge and minification I set up in the PostCSS setup.
How to do this?
Install the watch npm package:
npm install watch
and add the watch script to your package.json file. You already had build:css from before, we just add a script that watches the layouts folder and runs build:css upon every change:
"scripts": {
"build:css": "postcss src/tailwind.css -o static/dist/tailwind.css",
"watch": "watch 'npm run build:css' ./layouts"
}
Now run npm run watch or yarn watch.
download all my books for free
- javascript handbook
- typescript handbook
- css handbook
- node.js handbook
- astro handbook
- html handbook
- next.js pages router handbook
- alpine.js handbook
- htmx handbook
- react handbook
- sql handbook
- git cheat sheet
- laravel handbook
- express handbook
- swift handbook
- go handbook
- php handbook
- python handbook
- cli handbook
- c handbook
subscribe to my newsletter to get them
Terms: by subscribing to the newsletter you agree the following terms and conditions and privacy policy. The aim of the newsletter is to keep you up to date about new tutorials, new book releases or courses organized by Flavio. If you wish to unsubscribe from the newsletter, you can click the unsubscribe link that's present at the bottom of each email, anytime. I will not communicate/spread/publish or otherwise give away your address. Your email address is the only personal information collected, and it's only collected for the primary purpose of keeping you informed through the newsletter. It's stored in a secure server based in the EU. You can contact Flavio by emailing [email protected]. These terms and conditions are governed by the laws in force in Italy and you unconditionally submit to the jurisdiction of the courts of Italy.