diff --git a/examples/issue-61/eslint.config.js b/examples/issue-61/eslint.config.js new file mode 100644 index 0000000..b751c45 --- /dev/null +++ b/examples/issue-61/eslint.config.js @@ -0,0 +1,5 @@ +import vuePreset from '@yungezeit/eslint-vue'; + +export default [ + ...vuePreset, +]; diff --git a/examples/issue-61/index.html b/examples/issue-61/index.html new file mode 100644 index 0000000..a9122df --- /dev/null +++ b/examples/issue-61/index.html @@ -0,0 +1,13 @@ + + + + + + + vite-plugin-entry-shaking example + + +
+ + + diff --git a/examples/issue-61/package.json b/examples/issue-61/package.json new file mode 100644 index 0000000..0e2a961 --- /dev/null +++ b/examples/issue-61/package.json @@ -0,0 +1,24 @@ +{ + "name": "vite-plugin-entry-shaking-example-issue-61", + "type": "module", + "version": "0.0.0", + "private": true, + "scripts": { + "dev": "vite", + "build": "vue-tsc && vite build", + "preview": "vite preview" + }, + "dependencies": { + "vue": "^3.5.12" + }, + "devDependencies": { + "@types/node": "^22.8.4", + "@vitejs/plugin-vue": "^5.1.4", + "@yungezeit/eslint-vue": "^0.0.12", + "sass": "^1.80.5", + "typescript": "^5.6.3", + "vite": "^5.4.10", + "vite-plugin-entry-shaking": "workspace:*", + "vue-tsc": "^2.1.8" + } +} diff --git a/examples/issue-61/src/App.vue b/examples/issue-61/src/App.vue new file mode 100644 index 0000000..6652695 --- /dev/null +++ b/examples/issue-61/src/App.vue @@ -0,0 +1,6 @@ + + + diff --git a/examples/issue-61/src/main.ts b/examples/issue-61/src/main.ts new file mode 100644 index 0000000..e97643f --- /dev/null +++ b/examples/issue-61/src/main.ts @@ -0,0 +1,9 @@ +import { createApp } from 'vue'; +import App from './App.vue'; + +import { util1 } from './utils/index'; + +console.info(util1); + +const app = createApp(App); +app.mount('#app'); diff --git a/examples/issue-61/src/utils/index.ts b/examples/issue-61/src/utils/index.ts new file mode 100644 index 0000000..5e1947e --- /dev/null +++ b/examples/issue-61/src/utils/index.ts @@ -0,0 +1,2 @@ +export { default as util1 } from './util1'; +export { default as util2 } from './util2'; diff --git a/examples/issue-61/src/utils/util1.ts b/examples/issue-61/src/utils/util1.ts new file mode 100644 index 0000000..de795eb --- /dev/null +++ b/examples/issue-61/src/utils/util1.ts @@ -0,0 +1,4 @@ +function util1() { + /* .... */ +} +export default util1; diff --git a/examples/issue-61/src/utils/util2.ts b/examples/issue-61/src/utils/util2.ts new file mode 100644 index 0000000..b7be7e1 --- /dev/null +++ b/examples/issue-61/src/utils/util2.ts @@ -0,0 +1,4 @@ +function util2() { + /* .... */ +} +export default util2; diff --git a/examples/issue-61/src/vite-env.d.ts b/examples/issue-61/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/examples/issue-61/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/examples/issue-61/tsconfig.json b/examples/issue-61/tsconfig.json new file mode 100644 index 0000000..6634f74 --- /dev/null +++ b/examples/issue-61/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "preserve", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src/**/*.ts", "src/**/*.vue"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/examples/issue-61/tsconfig.node.json b/examples/issue-61/tsconfig.node.json new file mode 100644 index 0000000..4b2c26b --- /dev/null +++ b/examples/issue-61/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "strictNullChecks": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/examples/issue-61/vite.config.ts b/examples/issue-61/vite.config.ts new file mode 100644 index 0000000..a24f1e6 --- /dev/null +++ b/examples/issue-61/vite.config.ts @@ -0,0 +1,23 @@ +import { defineConfig } from 'vite'; +import { dirname } from 'path'; +import { fileURLToPath } from 'url'; +import vue from '@vitejs/plugin-vue'; +import EntryShakingPlugin from 'vite-plugin-entry-shaking'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +export default defineConfig(() => ({ + plugins: [ + EntryShakingPlugin({ + targets: [ + { + // + glob: 'src/utils/index.ts', + }, + ], + debug: true, + }), + vue(), + ], +}));