Hey folks.
So, I have now built a few projects with Sage and I feel like it’s time to get deeper to eventually contribute to its growth or building a “custom version”.
What do you think would be the best way to understand the inner workings of Sage?
What concept/technologies is it made of? (e.g. Webpack for assets management and bundling, Composer for module autoloading, …)
the book is definitely the best place to start. Once you’ve read that, this community is a great place for some of the more specific questions about implementation and such.
config.json — where the user defines project configuration.
config.js — prepares config.json (and config-local.json) for use in Webpack.
webpack.config.js — Base Webpack configuration. Super daunting at first, but if you dive into Webpack as well, you’ll find this a valuable resource to see how a real project is doing things.
Understanding how to use Sage — especially by the book — will give you a greater understanding of how Sage works. I’ve learned so much from the book + learning how to plug new things into Sage so I can use them. Further, having an understanding of what Sage is trying to accomplish is vital if you want “to eventually contribute to its growth.” And on that note, if you want to go deeper to understand how Sage is used, then helping out here on Roots Discourse is a fantastic way of learning as you will encounter how other people are using or trying to use Sage. Unless you know the greater need — not just your own — you will not know what to contribute.
As you dig into functions.php and in turn sage-lib, you’ll see the Laravel stuff. You can go as far as you want with that stuff, but I would recommend digging deep enough to understand the current capabilities of Sage’s use of Laravel (not as a prerequisite to Sage though).