$import

import npm package from jsdelivr to devtools

  1. // ==UserScript==
  2. // @name $import
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.0.1
  5. // @description import npm package from jsdelivr to devtools
  6. // @author zhowiny
  7. // @match *://*/*
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=npm.com
  9. // @grant none
  10. // @license GNU AGPLv3
  11. // ==/UserScript==
  12.  
  13. async function waitUntil(condition, timeout) {
  14. return new Promise((resolve, reject) => {
  15. const t = Date.now();
  16. const raf = async () => {
  17. if (await condition()) {
  18. resolve();
  19. } else if (timeout > 0 && Date.now() - t > timeout) {
  20. reject({message: `timeout(${timeout})`});
  21. } else {
  22. requestAnimationFrame(raf);
  23. }
  24. }
  25. requestAnimationFrame(raf);
  26. });
  27. }
  28.  
  29. async function importScript(pkgName, name = '__pkg') {
  30. if (window[name]) {
  31. console.warn('override variable: ${name}')
  32. }
  33. const s = document.createElement('script')
  34. s.type = 'module'
  35. s.defer = true
  36. s.innerText = `import pkg from "https://cdn.jsdelivr.net/npm/${pkgName}/+esm";window.${name} = pkg;`
  37. document.body.appendChild(s)
  38. await waitUntil(() => window[name])
  39. };
  40.  
  41. (function() {
  42. 'use strict';
  43. window.$import = importScript
  44. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址