log-package-error.js 931 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. "use strict";
  2. const log = require("npmlog");
  3. module.exports.logPackageError = logPackageError;
  4. /**
  5. * @param {import("execa").ExecaError & { pkg: import("@lerna/package").Package }} err
  6. * @param {boolean} stream
  7. */
  8. function logPackageError(err, stream = false) {
  9. log.error(err.command, `exited ${err.exitCode} in '${err.pkg.name}'`);
  10. if (stream) {
  11. // Streaming has already printed all stdout/stderr
  12. return;
  13. }
  14. if (err.stdout) {
  15. log.error(err.command, "stdout:");
  16. directLog(err.stdout);
  17. }
  18. if (err.stderr) {
  19. log.error(err.command, "stderr:");
  20. directLog(err.stderr);
  21. }
  22. // Below is just to ensure something sensible is printed after the long stream of logs
  23. log.error(err.command, `exited ${err.exitCode} in '${err.pkg.name}'`);
  24. }
  25. /** @param {string} message */
  26. function directLog(message) {
  27. log.pause();
  28. console.error(message); // eslint-disable-line no-console
  29. log.resume();
  30. }