Ah, the build + optional deploy script. The "thing" that turns whatever your compiler spits out into a zip/msi/whatever that you can actually install /pass along to customers. For build scripts i've started with batch files, C# , Powershell, moving to msbuild tasks (yeah, that was "fun" ), FAKE, to the node.js "task runner" framework du jour (Grunt, Gulp etc) to finally get back to Powershell.
I still think the best solution for writing a build script is in a shell scripting language (Powershell, bash, whatever) because :
- when it will crash (and it will !!) you're debugging code written by you instead of fuzzing around with a stacktrace spitted up by some shitty Grunt plugin (for instance).
- ubiquity : only powershell/bash is required to run it (compared with node.js + npm + gulp + whatever other plugins you are using).
- simplest way to run 3rd party CLI apps as part of build process ( "& filePath args" and you're done).
- everything is in one place (no package.json, gruntfile(s) and so on). A single file that handles everything.