npm-to-cdn
Version:
A CLI tool to get CDN links for any npm package.
57 lines (56 loc) • 2.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPossibleUmdFiles = getPossibleUmdFiles;
// Return a prioritized list of possible UMD file names for a given package and version
function getPossibleUmdFiles(pkg, version, opts) {
// Helper to parse major version
function getMajor(ver) {
if (!ver)
return null;
const m = ver.match(/^(\d+)/);
return m ? parseInt(m[1], 10) : null;
}
const min = opts?.min ?? true;
const dev = opts?.dev ?? false;
switch (pkg) {
case 'react': {
const major = getMajor(version);
if (major && major >= 18) {
return dev
? ['react.development.js', 'umd/react.development.js']
: ['react.production.min.js', 'umd/react.production.min.js', 'react.development.js', 'umd/react.development.js'];
}
return min
? ['react.production.min.js', 'umd/react.production.min.js', 'react.development.js', 'umd/react.development.js']
: ['react.development.js', 'umd/react.development.js', 'react.production.min.js', 'umd/react.production.min.js'];
}
case 'react-dom': {
const major = getMajor(version);
if (major && major >= 18) {
return dev
? ['react-dom.development.js', 'umd/react-dom.development.js']
: ['react-dom.production.min.js', 'umd/react-dom.production.min.js', 'react-dom.development.js', 'umd/react-dom.development.js'];
}
return min
? ['react-dom.production.min.js', 'umd/react-dom.production.min.js', 'react-dom.development.js', 'umd/react-dom.development.js']
: ['react-dom.development.js', 'umd/react-dom.development.js', 'react-dom.production.min.js', 'umd/react-dom.production.min.js'];
}
case 'vue': {
const major = getMajor(version);
if (major && major >= 3) {
return min
? ['vue.global.prod.js', 'vue.runtime.global.prod.js', 'vue.global.js']
: ['vue.global.js', 'vue.global.prod.js', 'vue.runtime.global.prod.js'];
}
return min
? ['vue.runtime.min.js', 'vue.min.js']
: ['vue.js', 'vue.runtime.js', 'vue.runtime.min.js', 'vue.min.js'];
}
case 'lodash':
return min ? ['lodash.min.js'] : ['lodash.js', 'lodash.min.js'];
case 'axios':
return min ? ['axios.min.js'] : ['axios.js', 'axios.min.js'];
default:
return min ? [`${pkg}.min.js`] : [`${pkg}.js`, `${pkg}.min.js`];
}
}