Resolves packages to their relative CDN URLS.
Note
Skypack was recently removed in version v2.0.0, since it wa unmainted and new code was breaking it. So if you are using Skypack, please use version v1.4.1
- Resolves a package name to a CDN URL
- Supports all major CDNs (esm.sh, unpkg, jsdelivr, etc.)
- Resolves types
npm install cdn-resolve
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("swr@2.1.1", {
alias: {
react: "preact/compat"
}
});
const typesUrl = await resolveESMTypes(resolved);
// => https://esm.sh/v135/swr@2.1.1/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("vue@3.2.47");
// => {
// "name": "vue",
// "version": "3.2.47",
// }
const parsedWithPathAndVersion = parsePackage("vue@3.2.47/package.json");
// => {
// "name": "vue",
// "version": "3.2.47",
// "path": "package.json"
// }
Published under MIT License.