Сейчас примерно следующая структура
- assets
-- dev
--- less
--- js
--- img
-- build
--- css
---- production.min.css
--- js
---- libs
---- production.min.js
--- img
Соответственно сборка происходит примерно следующим образом:
1. В dev/img лежат svg и png иконки, делаем из них base64, png-спрайты и т. д., спрайты помещаем в build/img
2. Less > build/production.css > build/production.min.css
3. Весь js > build/production.js > build/productions.min.js
4. Вся графика в build/img оптимизируется
В общем и целом все достаточно удобно, но меня смущает что я закидываю изображения, не требующие чего-то кроме оптимизации сразу в build. А так же сразу в build лежат файлы js/libs: это библиотеки, которые обязательно надо подключать отдельными файлами, например modernizr в head страницы, или jquery, которую будем загружать только если вдруг Гугл недоступен...
Поделитесь вашими практиками организации файлов в подобных проектах?
@junk1114: src, dist, tests, зависимости хэндлятся через bower, на любим кофескрипт потому можно не пересобирать проект при разработке а просто ребутить страницу, gulp-inject-ом вставляются все скприты и стили, никакой ручной правки index.html (у нас только SPA и только angular на данный момент) ибо пораждает конфликты и просто ленивый народ программисты...
Стили - scss + autoprefixer + sourcemaps
Скрипты при билде - concat + обернуть в замыкание + uglify + sourcemaps
сорспэпы только для разработки, при сборке в релиз убираются. uglify и штуки типа csso, оптимизации картинок так же только для релиза, для разработки хотели уменьшить время сборки проекта (для cordova-based проектов, что бы можно было на девайсе тестить).
Вот... Единственное что я стараюсь держать gulpfile почище и разношу все по модулям. Модули можно из проекта в проект реюзать. Так же у вас есть lazypipe которым я DRY-ю свои таски (например те же сорсмэпы у меня через lazypipe делаются, как обертка.