Я очень давно мучаюсь со следующей проблемой:
есть таск build, перед ним должен выполниться таск clean. А за ним все остальные сборщики запускаются. Это понятно, иначе он снесет папку с уже чем-то скомпиленным вполне вероятно.
А зачастую нужно собрать один конкретный файл.
Допустим логика такая:
build -> [build-scripts, build-styles, build-html]
build-scripts -> [clean], fn
build-styles -> [clean], fn
build-html -> [clean], fn
А как сделать так, чтобы иметь возможность запускать и билд, и отдельные сборщики (без снесения всей папки) — без малейшего понятия.
Вот это основная проблема галпа: он не предназначен для повторного использования тасков по большому счету.
Хотя лучше него ничего нет все равно.
Возможно я не совсем понял проблему, но в чем сложность в тасках build-script/styles/html обновлять/сносить только то, что нужно, например, build-styles сносит только стили, а build-script только скрипты? Скажем, не использовать clean который сносит все, а разбить эту задачу на clean-style, clean-script, clean-html.
Не буду спорить, т.к. это дело вкуса и обстоятельств, просто для меня как-то проще и логичнее, когда каждый таск делает только свое дело, а уже потом из этих маленьких тасков строятся таски с расширенной функциональностью. Т.е. таск должен быть настолько простым, насколько это возможно, но не проще.
да я не спорю, сам задумался что так стоит делать :) но именно по простоте «снести папку» куда проще чем «снеси такие-такие-такие и такие файлы».
А, вот, сообразил, в чем есть ньюанс.
У меня периодически бывают подобные ситуации
src/tooltipster.css
src/style.sass
компилируются в
build/tooltipster.css
build/style.css
Все куда сложнее, но если вкратце — ситуация именно такая: есть неопределенный список расширений файлов на выходе, и если я собираю проект — я сношу их, в противном случае я хочу просто перезаписать. Объяснения дальше запутанные и сложные, но если вкратце — разносить по папкам типа assets/ не выйдет, постфиксы (типа style.sass.css) тоже не очень нравится как идея.
а ещё можно просто сделать gulp.start('task_name') что бы не делать длинных цепочек callback-ов
например для того что бы сделать релиз нам нужен момер версии, в таком случае:
Последовательное выполнение задач в Gulp JS