diff --git a/app/frontend/entrypoints/application.js b/app/frontend/entrypoints/application.js index 3eae392..05742a8 100644 --- a/app/frontend/entrypoints/application.js +++ b/app/frontend/entrypoints/application.js @@ -1,5 +1,5 @@ import Rails from "@rails/ujs"; Rails.start(); -import "@primer/view-components/app/components/primer/primer.js"; +import "@primer/view-components"; import "../controllers/upload_dropzone.js"; diff --git a/config/initializers/primer.rb b/config/initializers/primer.rb new file mode 100644 index 0000000..c27a751 --- /dev/null +++ b/config/initializers/primer.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +# Disable the gem's automatic JS inclusion - we import it manually via Vite +# from the @primer/view-components npm package to avoid duplicate custom element registration +Primer::ViewComponents.configure do |config| + config.silence_deprecations = true +end diff --git a/vite.config.ts b/vite.config.ts index 784ca10..c1661d0 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -7,15 +7,37 @@ export default defineConfig({ ], build: { - minify: false + minify: false, + rollupOptions: { + output: { + manualChunks: undefined + } + } }, resolve: { - dedupe: ['@primer/view-components', '@github/catalyst'] + dedupe: [ + '@primer/view-components', + '@github/catalyst', + '@github/relative-time-element', + '@github/clipboard-copy-element', + '@github/details-menu-element', + '@github/include-fragment-element', + '@github/image-crop-element' + ], + alias: [ + { + find: /^@primer\/view-components$/, + replacement: '@primer/view-components/app/assets/javascripts/primer_view_components.js' + } + ] }, optimizeDeps: { - include: ['@primer/view-components'], + include: [ + '@primer/view-components', + '@github/catalyst' + ], esbuildOptions: { keepNames: true } @@ -26,6 +48,4 @@ export default defineConfig({ overlay: true } }, - - })