Re:Time for Makefiles to Make a Comeback
by akvadrako on Tuesday September 05, 2017 @05:02AM
(#15173525)
The data model of makefiles is perfect for watching and rebuilding. All you need to add is something that monitors the source files for any changes and runs 'make'.
[ Parent
| on HN ]
Re:Time for Makefiles to Make a Comeback
by Yaggo on Tuesday September 05, 2017 @11:38AM
(#15176261)
You lose incremental builds of modern bundlers/transpilers, which makes your build time too slow for bigger projects. People nowadays expect to see changes almost in realtime using hot module replacement etc.
Re:Time for Makefiles to Make a Comeback
by akvadrako on Tuesday September 05, 2017 @04:04PM
(#15178644)
That's because those tools aren't designed to play well with others. It's not due to the design of make.
Re:Time for Makefiles to Make a Comeback
by Yaggo on Wednesday September 06, 2017 @05:21AM
(#15182240)
I would say it's partly because of the design of make.
A Makefile consists of separate commands¹ and is heavily file-based¹, which makes it rather slow and doesn't allow to keep state (in memory) between re-runs. Traditionally this hasn't been bottleneck, because compiling C code was relatively slow operation, but modern web development tools prefer to work with in-memory streams instead of invoking executables for tiny files on disk.
I'm not saying you cannot do things with make, but in NodeJS/web ecosystem it just doesn't feel as natural/flexible as the "native" NodeJS-based toolchain.
[1] Great for interoperability, but sometimes more tailored solution is worth it.
Re:Time for Makefiles to Make a Comeback
by akvadrako on Wednesday September 06, 2017 @12:09PM
(#15184749)
Launching a process on Linux only takes about 2ms, and make only needs to do it for parts that change. There is no reason you couldn't use a make-based system to get incremental rebuilds with under 100ms latency, which is about as good as most people get with native JS systems.
Re:Time for Makefiles to Make a Comeback
by jbergens on Tuesday September 05, 2017 @11:07AM
(#15175929)
For js code you often want hot module reloading which is probably very hard to get with make.
Re:Time for Makefiles to Make a Comeback
by josephg on Tuesday September 05, 2017 @05:04AM
(#15173535)
That sounds like a great idea. Does anything like that exist already?
Re:Time for Makefiles to Make a Comeback
by oso2k on Tuesday September 05, 2017 @05:14AM
(#15173581)
Easy enough (assuming $SRC is your list of source files and 'all' is top level target) 'make watch' could do this
watch:
while ! inotifywait -e modify $(SRC) ; do time -p make all; done
Re:Time for Makefiles to Make a Comeback
by lloeki on Tuesday September 05, 2017 @05:56AM
(#15173759)
If you care for it, fswatch is cross-platform:
something along the lines of inotify:
http://man7.org/linux/man-pages/man1/inotifywait.1.html
or just use tup
Re:Time for Makefiles to Make a Comeback
by petepete on Tuesday September 05, 2017 @05:11AM
(#15173573)
Also, entr
Re:Time for Makefiles to Make a Comeback
by AndrewOMartin on Tuesday September 05, 2017 @07:59AM
(#15174300)
There's "when-changed" in pip.
pip install when-changed
when-changed *.tex -c "make all && echo 'done'"
Then you can make rule in your make file called "watch" or "build-server" which calls that command, so you just need to write "make watch".
Re:Time for Makefiles to Make a Comeback
by gall0ws on Tuesday September 05, 2017 @05:09AM
(#15173561)
It's trivial to roll your own: https://github.com/gall0ws/watch