UNPKG

vite-dts

Version:

Blazing fast .d.ts modules for libraries

75 lines 3.56 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const load_json_file_1 = __importDefault(require("load-json-file")); const path = __importStar(require("path")); const fs = __importStar(require("fs")); function dts() { return { name: 'vite:dts', apply: 'build', async configResolved(config) { const { logger } = config; const { outDir } = config.build; const { entry, formats = ['es'] } = config.build.lib || {}; if (!entry) { return logger.warn(`[vite-dts] Expected "build.lib.entry" to exist in vite config`); } const pkg = await load_json_file_1.default(path.join(config.root, 'package.json')); if (!pkg.main && formats.includes('cjs')) { return logger.warn(`[vite-dts] Expected "main" to exist in package.json`); } if (!pkg.module && formats.includes('es')) { return logger.warn(`[vite-dts] Expected "module" to exist in package.json`); } const entryPath = path.resolve(config.root, entry); const entryImportPath = path.relative(path.resolve(config.root, outDir), entryPath.replace(/\.tsx?$/, '')); const posixEntryImportPath = entryImportPath.split(path.sep).join(path.posix.sep); const entryImpl = fs.readFileSync(entryPath, 'utf8'); const hasDefaultExport = /^(export default |export \{[^}]+? as default\s*[,}])/m.test(entryImpl); const dtsModule = `export * from "${posixEntryImportPath}"` + (hasDefaultExport ? `\nexport {default} from "${posixEntryImportPath}"` : ``); const cjsModulePath = path.relative(outDir, pkg.main); const esModulePath = path.relative(outDir, pkg.module); this.generateBundle = function ({ entryFileNames }) { if (entryFileNames == cjsModulePath) { this.emitFile({ type: 'asset', fileName: cjsModulePath.replace(/\.js$/, '.d.ts'), source: dtsModule, }); } else if (entryFileNames == esModulePath) { this.emitFile({ type: 'asset', fileName: esModulePath.replace(/\.js$/, '.d.ts'), source: dtsModule, }); } }; }, }; } exports.default = dts; //# sourceMappingURL=plugin.js.map