const unpkg = require("unpkg") const warning = require("warning") function unpkgRewrite(dependencies = {}) { return { inherits: require("babel-plugin-syntax-export-extensions"), visitor: { "ImportDeclaration|ExportNamedDeclaration|ExportAllDeclaration"(path) { if (!path.node.source) return // probably a variable declaration const id = path.node.source.value if (unpkg.isRemoteModuleIdentifier(id)) { return // leave it alone } else if (unpkg.isLocalModuleIdentifier(id)) { path.node.source.value = `${id}?module` } else if (unpkg.isBareModuleIdentifier(id)) { const { packageName, file } = unpkg.parseBareModuleIdentifier(id) warning( dependencies[packageName], 'Missing version info for package "%s" in dependencies; falling back to "latest"', packageName ) const version = dependencies[packageName] || "latest" path.node.source.value = `https://unpkg.com/${packageName}@${version}${file}?module` } } } } } module.exports = unpkgRewrite