I ended up using GM directly for this using this command:
gm convert inputPath -resize "200x200>" -gravity center -extent 200x200 outputPath
This will create an image 200x200 with the input image centered in it, they -resize 200x200> part (note the >) means only resize it to be smaller not bigger
The equivalent command using the gm module in node is:
var size = {width: 200, height: 200};
gm(sourcePath)
.resize(size.width, size.height + ">")
.gravity('Center')
.extent(size.width, size.height)
.write(outputPath, function (error) {
if (error) console.log('Error - ', error);
});