Skip to content

📦 Resolves packages to their CDN url

License

Notifications You must be signed in to change notification settings

luxass/cdn-resolve

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cdn-resolve

npm version npm downloads

Resolves packages to their relative CDN URLS.

Features

  • Resolves a package name to a CDN URL
  • Supports all major CDNs (esm.sh, skypack, unpkg, jsdelivr, etc.)
  • Resolves types

📦 Installation

npm install cdn-resolve

📚 Usage

Resolve React from esm.sh

import { buildCDNUrl } from "cdn-resolve";

// You can also import the esm builder directly
import { buildESMUrl } from "cdn-resolve/esm";

const esm = buildCDNUrl("esm");

esm("swr", {
  alias: {
    react: "preact/compat"
  }
});
// => https://esm.sh/swr?alias=react:preact/compat

buildESMUrl("swr", {
  alias: {
    react: "preact/compat"
  }
});

// => https://esm.sh/swr?alias=react:preact/compat

Resolve typedefs for React from esm.sh

import { buildESMUrl } from "cdn-resolve/esm";

const resolved = buildESMUrl("[email protected]", {
  alias: {
    react: "preact/compat"
  }
});

const typesUrl = await resolveESMTypes(resolved);

// => https://esm.sh/v135/[email protected]/X-YS9yZWFjdDpwcmVhY3QvY29tcGF0/core/dist/index.d.ts

Parse a Package Name

import { parsePackage } from "cdn-resolve";

const parsed = parsePackage("vue");

// => {
//   "name": "vue",
//   "version": "latest",
// }

const parsedWithVersion = parsePackage("[email protected]");

// => {
//   "name": "vue",
//   "version": "3.2.47",
// }

const parsedWithPathAndVersion = parsePackage("[email protected]/package.json");

// => {
//   "name": "vue",
//   "version": "3.2.47",
//   "path": "package.json"
// }

📄 License

Published under MIT License.