install-pkg.cjs 957 B

1234567891011121314151617181920212223242526272829303132333435
  1. 'use strict';
  2. const installPkg = require('@antfu/install-pkg');
  3. const utils = require('@antfu/utils');
  4. const kolorist = require('kolorist');
  5. const loader_warn = require('./warn.cjs');
  6. let pending;
  7. const tasks = {};
  8. async function tryInstallPkg(name, autoInstall) {
  9. if (pending) {
  10. await pending;
  11. }
  12. if (!tasks[name]) {
  13. console.log(kolorist.cyan(`Installing ${name}...`));
  14. if (typeof autoInstall === "function") {
  15. tasks[name] = pending = autoInstall(name).then(() => utils.sleep(300)).finally(() => {
  16. pending = void 0;
  17. });
  18. } else {
  19. tasks[name] = pending = installPkg.installPackage(name, {
  20. dev: true,
  21. preferOffline: true
  22. }).then(() => utils.sleep(300)).catch((e) => {
  23. loader_warn.warnOnce(`Failed to install ${name}`);
  24. console.error(e);
  25. }).finally(() => {
  26. pending = void 0;
  27. });
  28. }
  29. }
  30. return tasks[name];
  31. }
  32. exports.tryInstallPkg = tryInstallPkg;