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.