diff options
author | 2024-08-19 08:12:33 -0400 | |
---|---|---|
committer | 2024-08-19 08:12:33 -0400 | |
commit | 3822e574aa1d779020983a2d9815b3974a9d911a (patch) | |
tree | e73bc12683498256f3a27c3d57033427f0eff71a /packages/integrations/lit/src/index.ts | |
parent | 7ffcae19064a8c912a7d5e8c943952923d20edc5 (diff) | |
download | astro-3822e574aa1d779020983a2d9815b3974a9d911a.tar.gz astro-3822e574aa1d779020983a2d9815b3974a9d911a.tar.zst astro-3822e574aa1d779020983a2d9815b3974a9d911a.zip |
Remove @astrojs/lit (#11680)
* Remove @astrojs/lit
This removes the Lit integration as an official integration. The reasons
for doing so in 5.0:
- Only 1% of Astro users use this integration.
- SSR support in Lit is at a lower-level of support due to be a Labs
project: https://lit.dev/docs/libraries/labs/, and has been in this
state since we added support a couple of years ago.
- The maintenance cost of fixing bugs in this integration is too high
given the low usage. Some PRs for upgrading Lit versions have taken
quite a long time. We can't justify the core team being responsible for
this going forward.
- There used to be community contributions to fix bugs but this has
fallen off for various reasons.
Given that, this PR removes the integration as one that is officially
supported by the Astro core team. Interested community members are
encouraged to fork the integration and continue the development in
another repository.
* Remove e2e tests and examples
* Update lockfile
* Remove ssr-lit.test.js
* Remove error for no client entrypoint
* Remove auto selection of the Lit renderer
* Remove lit package.json
* Remove lit fixture
Diffstat (limited to 'packages/integrations/lit/src/index.ts')
-rw-r--r-- | packages/integrations/lit/src/index.ts | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/packages/integrations/lit/src/index.ts b/packages/integrations/lit/src/index.ts deleted file mode 100644 index 94a6d683a..000000000 --- a/packages/integrations/lit/src/index.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { readFileSync } from 'node:fs'; -import type { AstroIntegration, ContainerRenderer } from 'astro'; - -function getViteConfiguration() { - return { - optimizeDeps: { - include: [ - '@astrojs/lit/dist/client.js', - '@astrojs/lit/client-shim.js', - '@astrojs/lit/hydration-support.js', - '@webcomponents/template-shadowroot/template-shadowroot.js', - '@lit-labs/ssr-client/lit-element-hydrate-support.js', - ], - exclude: ['@astrojs/lit/server.js'], - }, - ssr: { - external: ['lit-element', '@lit-labs/ssr', '@astrojs/lit', 'lit/decorators.js'], - }, - }; -} - -export function getContainerRenderer(): ContainerRenderer { - return { - name: '@astrojs/lit', - serverEntrypoint: '@astrojs/lit/server.js', - }; -} - -export default function (): AstroIntegration { - return { - name: '@astrojs/lit', - hooks: { - 'astro:config:setup': ({ updateConfig, addRenderer, injectScript }) => { - // Inject the necessary polyfills on every page (inlined for speed). - injectScript( - 'head-inline', - readFileSync(new URL('../client-shim.min.js', import.meta.url), { encoding: 'utf-8' }), - ); - // Inject the hydration code, before a component is hydrated. - injectScript('before-hydration', `import '@astrojs/lit/hydration-support.js';`); - // Add the lit renderer so that Astro can understand lit components. - addRenderer({ - name: '@astrojs/lit', - serverEntrypoint: '@astrojs/lit/server.js', - clientEntrypoint: '@astrojs/lit/dist/client.js', - }); - // Update the vite configuration. - updateConfig({ - vite: getViteConfiguration(), - }); - }, - 'astro:build:setup': ({ vite, target }) => { - if (target === 'server') { - if (!vite.ssr) { - vite.ssr = {}; - } - if (!vite.ssr.noExternal) { - vite.ssr.noExternal = []; - } - if (Array.isArray(vite.ssr.noExternal)) { - vite.ssr.noExternal.push('lit'); - } - } - }, - }, - }; -} |