/* monkey-patch console.log to prefix with file/line-number */ if (process.env.LOG_LINE) { let cwd = process.cwd(), cwdRe = new RegExp('^[^/]*' + cwd.replace('/', '\\/') + '\/([^:]*:[0-9]*).*$'); [ 'log', 'warn', 'error' ].forEach(function(method) { console[method] = (function () { let orig = console[method]; return function () { function getErrorObject() { try { throw Error(''); } catch (err) { return err; } } let err = getErrorObject(), caller_line = err.stack.split('\n')[3], args = [caller_line.replace(cwdRe, '$1 -')]; /* arguments.unshift() doesn't exist... */ for (var i = 0; i < arguments.length; i++) { args.push(arguments[i]); } orig.apply(this, args); }; })(); }); }