diff --git a/packages/vite-plugin-drupal/src/plugins/config.ts b/packages/vite-plugin-drupal/src/plugins/config.ts index ff1f751..60f375a 100644 --- a/packages/vite-plugin-drupal/src/plugins/config.ts +++ b/packages/vite-plugin-drupal/src/plugins/config.ts @@ -20,6 +20,21 @@ export default (ctx: Context): Plugin => { return { name: 'vite-plugin-uebertool-config', async config(config) { + const input = await fg([ + '(js|css|templates)/**/*.(js|jsx|css|ts|tsx)', + ], { + onlyFiles: true, + ignore: [ + '**/*.stories.*', + '**/*.ce.*', + '**/_*', + '**/*.d.ts', + './js/composables/**', + './js/stores/**', + './js/utils/**', + ], + }) + return mergeConfig(config, { ...(!(await postCssConfig()) && { css: { @@ -53,24 +68,14 @@ export default (ctx: Context): Plugin => { target: 'esnext', manifest: true, rollupOptions: { - input: await fg([ - '(js|css|templates)/**/*.(js|jsx|css|ts|tsx)', - ], { - onlyFiles: true, - ignore: [ - '**/*.stories.*', - '**/*.ce.*', - '**/_*', - '**/*.d.ts', - './js/composables/**', - './js/stores/**', - './js/utils/**', - ], - }), + input, output: { - manualChunks: { - 'vue.runtime.esm-browser.prod': ['vue'], - // 'alpine.runtime': ['alpinejs'], + manualChunks: (id: string) => { + if (id.match(/@vue\+runtime/)) + return 'vue.runtime.esm-browser.prod' + + if (id.match(/alpinejs@/)) + return 'alpine.runtime' }, assetFileNames: (assetInfo: any) => { const base = basename(assetInfo.name) @@ -79,9 +84,13 @@ export default (ctx: Context): Plugin => { if (assetMap.has(base)) return assetMap.get(base) + const fullPath = input.find(file => file.endsWith(base)) + if (fullPath) + dir = dirname(fullPath) + dir = dir.startsWith('.') ? '' : `${dir}/` - assetMap.set(base, `${dir}[name].[hash].[ext]`) + assetMap.set(base, `${dir}[name].[hash].[ext]`) return '[name].[hash].[ext]' }, entryFileNames: (assetInfo: any) => {