diff --git a/libs/vue/.vscode/extensions.json b/libs/vue/.vscode/extensions.json deleted file mode 100644 index a7cea0b0..00000000 --- a/libs/vue/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["Vue.volar"] -} diff --git a/libs/vue/package.json b/libs/vue/package.json index 92d0465d..3e35d9f4 100644 --- a/libs/vue/package.json +++ b/libs/vue/package.json @@ -3,33 +3,23 @@ "private": false, "version": "0.0.17", "type": "module", - "main": "./dist/index.umd.cjs", - "module": "./dist/index.js", + "main": "./dist/index.cjs.js", + "module": "./dist/index.es.js", "types": "./dist/index.d.ts", "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/index.umd.cjs", - "types": "./dist/index.d.ts" - } + "import": "./dist/index.mjs", + "require": "./dist/index.cjs.js" }, "scripts": { "dev": "vite", "build": "vue-tsc -b && vite build", + "build:dts": "vue-tsc --declaration --emitDeclarationOnly --declarationDir dist && rollup -c rollup.dts.config.js", "preview": "vite preview", "storybook": "storybook dev -p 6006", "build-storybook": "storybook build", "prepublishOnly": "npm run build" }, - "files": [ - "dist/index.es.js", - "dist/index.umd.js", - "dist/index.d.ts", - "dist/vue.css", - "README.md" - ], "dependencies": { - "vue": "^3.5.13", "quill": "^2.0.2" }, "devDependencies": { @@ -49,10 +39,11 @@ "typescript": "^5.5.3", "vite": "^6.0.1", "vue-tsc": "^2.1.10", - "vite-plugin-dts": "^4.3.0" + "vite-plugin-dts": "^4.3.0", + "rollup-plugin-dts":"^6.1.1" }, "peerDependencies": { - "vue": "^3.5.10" + "vue": "^3.5.13" }, "peerDependenciesMeta": { "vue": { diff --git a/libs/vue/rollup.dts.config.js b/libs/vue/rollup.dts.config.js new file mode 100644 index 00000000..4fca5021 --- /dev/null +++ b/libs/vue/rollup.dts.config.js @@ -0,0 +1,10 @@ +import dts from 'rollup-plugin-dts'; + +export default { + input: 'dist/index.d.ts', // Use the TypeScript-generated declarations as input + output: { + file: 'dist/index.d.ts', // Final declaration file + format: 'es', + }, + plugins: [dts()], +}; diff --git a/libs/vue/src/types/types.ts b/libs/vue/src/types/types.ts index 05efe128..c2e4027d 100644 --- a/libs/vue/src/types/types.ts +++ b/libs/vue/src/types/types.ts @@ -5,4 +5,4 @@ export interface Event { id: number; title: string; date: string; -} +} \ No newline at end of file diff --git a/libs/vue/tsconfig.app.json b/libs/vue/tsconfig.app.json index c54e6023..d465703f 100644 --- a/libs/vue/tsconfig.app.json +++ b/libs/vue/tsconfig.app.json @@ -1,24 +1,13 @@ { + "extends": "./tsconfig.json", "compilerOptions": { - "target": "ES2020", - "useDefineForClassFields": true, - "module": "ESNext", - "lib": ["ES2020", "DOM", "DOM.Iterable"], - "skipLibCheck": true, - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "isolatedModules": true, - "moduleDetection": "force", - "noEmit": true, - "jsx": "preserve", - - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true + "target": "ESNext", + "jsx": "preserve", // Preserve JSX for Vue files + "baseUrl": "./", + "paths": { + "@/*": ["src/*"] + } }, - "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"] + "include": ["src/**/*", "types/**/*"], + "exclude": ["node_modules", "dist", "storybook-static"] } diff --git a/libs/vue/tsconfig.json b/libs/vue/tsconfig.json index f9c621b5..6d68ae24 100644 --- a/libs/vue/tsconfig.json +++ b/libs/vue/tsconfig.json @@ -1,21 +1,16 @@ { - "files": [], // This remains empty for project references - "references": [ - { "path": "./tsconfig.app.json" }, - { "path": "./tsconfig.node.json" } - ], - "include": ["src/**/*.ts", "src/**/*.vue"], // Add this to include .ts and .vue files "compilerOptions": { - "declaration": true, // Enable .d.ts file generation - "declarationDir": "./dist", // Output directory for .d.ts files - "emitDeclarationOnly": true, // Prevent emitting JS files (only declarations) - "skipLibCheck": true, // Avoid issues with dependency .d.ts files - "strict": true, // Enable TypeScript's strict mode - "module": "ESNext", // Module type for ES6+ - "moduleResolution": "Node", // Resolve node_modules correctly - "jsx": "preserve", // Preserve JSX for Vue components - "esModuleInterop": true, // Support ES modules with interop - "resolveJsonModule": true, // If JSON imports are used - "isolatedModules": true // Required for Vue SFC with TypeScript - } + "target": "ES2015", + "module": "ESNext", + "moduleResolution": "Node", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "declaration": true, // Required for dts plugin + "declarationDir": "./dist", // Align with dts plugin + "outDir": "./dist", + "jsx": "preserve" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] } diff --git a/libs/vue/types/shims-vue.d.ts.ts b/libs/vue/types/shims-vue.d.ts.ts new file mode 100644 index 00000000..ab70f827 --- /dev/null +++ b/libs/vue/types/shims-vue.d.ts.ts @@ -0,0 +1,5 @@ +declare module '*.vue' { + import { DefineComponent } from 'vue'; + const component: DefineComponent<{}, {}, any>; + export default component; +} \ No newline at end of file diff --git a/libs/vue/vite.config.ts b/libs/vue/vite.config.ts index 05951eb6..5ff5104f 100644 --- a/libs/vue/vite.config.ts +++ b/libs/vue/vite.config.ts @@ -6,15 +6,16 @@ export default defineConfig({ plugins: [ vue(), dts({ - outDir: 'dist', // Correct property to specify declaration output directory - include: ['./src/**/*.ts', './src/**/*.vue'], // Include .ts and .vue files + outDir: './dist', // Ensure this is a valid relative path + include: ['./src'], // Include files within the `src` directory }), ], build: { lib: { entry: './src/index.ts', // Main entry file name: 'SwarmakitVue', - fileName: (format) => `index.${format}.js`, + formats: ['es', 'cjs', 'umd'], // Generate ES, CommonJS, and UMD formats + fileName: (format) => `index.${format}.js`, // Simplified filename logic }, rollupOptions: { external: ['vue'], // Exclude Vue from the bundle @@ -24,6 +25,6 @@ export default defineConfig({ }, }, }, - outDir: 'dist', // Ensure output is in `dist` + outDir: './dist', // Ensure output is in `dist` }, });