003 JSJ Build Tools




Javascript Jabber show

Summary: Panel AJ O'Neal (twitter github blog) Charles Max Wood (twitter github Teach Me To Code Rails Summer Camp) Jamison Dance (twitter github blog) Yehuda Katz (twitter github blog) Discussion Jamison's Wishlist giant donut write code same node / browser - require, syntax dev mode - hot reload prod mode - compile to giant file pluggable (connect-like) pipeline Model the problem as a regular build problem Source URL document.write semantics minification CoffeeScript CSS/LESS Rails' Asset Pipeline Sprockets Rake Performance Don't assume runtime Big Javascript Apps vs mostly HTML Apps NPM Browser code vs Server code Download and deposit method vs package manager Should browser code be in NPM? AMD Common JS Ender Require.js Ember.js Use synchronous requests when you can. Ruby and Python vs JavaScript for server scripting Browser Community vs Node Community Picks Eliazor ... Harry Potter and the Methods of Rationality (Jamison) Exercise (Jamison) LivingSocial (AJ) DropShare (AJ) Debt: The First 5,000 Years (Yehuda) Flint (Yehuda) MailPlane (Chuck) Speedo Aquabeat (Chuck) Transcript JAMISON: Hey save it for the podcast, you guys. YEHUDA: Fight, Fight, Fight! CHUCK:                   Yeah. Hi everybody and welcome to the episode three of the JavaScript Jabber podcast. This week on our panel, we have AJ O'Neal. AJ:            Hello! CHUCK:                   We also have Jamison Dance. JAMISON: Howdy doody! CHUCK:                   We have Yehuda Katz. YEHUDA: Glad to be here as always. CHUCK:                   And I'm Charles Max Wood from teachmetocode.com and this week we are going to talk about build tools with JavaScript and the there's a lot to talk about. Does somebody want to kind of start us off and talk about some of the build tools that are out there and what types there are and then we can kind of dig into why they use them. JAMISON: Okay, so I have a wish list and my goal for this podcast is to figure out if this exist or not. To have someone make it (or maybe me make it). So first on my list, is like, maybe a giant doughnut in my hand right now. But second after that is like I want to be able--- YEHUDA: (MMMM DOUGHNUTS!) JAMISON: So I wanna be able to write my code in the same way on Node and in the browser. And be able to require it with the same syntax and use the code in the same way. I would also really like to have, like a development mode, where I don't have to do any kind of compilation or anything. I can just reload my page after I make changes to my code, but then be able to actually compile it on to one giant file, to cut down the number of HTTP requests. And it will be sweet if there is some kind “pipeline” that you could plug things into, right, because we are going to talk about all of these, like minifiers and compilers and things. But right now, it seems like there's a bunch of discreet tools that all kind of do one part of that, but they don’t really work together really well. I mean, I know things that solves each of these problems individually, but is there something that does all of this together? YEHUDA: So first of all, I wrote something like that. But it's written in Ruby, which probably means most of people in JavaScript will not want to use it. But I wanna say, with regard to the development of production thing, I'm definitely of the religion that, instead of trying to make a thing that will use like, HTTP through file system and development and then you compile in production to one file, I'm definitely of the religion that you should just make your development mode be smart and fast in doing the compilation for you, so that you're basically dealing the same exact environment in production and development. And a lot of people stop me right there and say, well, that means that you’re going to have,