diff options
author | 2024-12-13 07:50:00 +0100 | |
---|---|---|
committer | 2024-12-13 07:50:00 +0100 | |
commit | b6abc149e763d786e0bd5f90248e3d22256594d4 (patch) | |
tree | 346505bec931397cc62510191f4c4dc8e170c971 | |
parent | 9e5c6174790027afd52fa51d562e000dc46bc46e (diff) | |
download | astro-b6abc149e763d786e0bd5f90248e3d22256594d4.tar.gz astro-b6abc149e763d786e0bd5f90248e3d22256594d4.tar.zst astro-b6abc149e763d786e0bd5f90248e3d22256594d4.zip |
fix: cloudflare resolve conditions (#476)
6 files changed, 75 insertions, 2 deletions
diff --git a/packages/integrations/cloudflare/src/index.ts b/packages/integrations/cloudflare/src/index.ts index a7242cfca..3193683c2 100644 --- a/packages/integrations/cloudflare/src/index.ts +++ b/packages/integrations/cloudflare/src/index.ts @@ -12,7 +12,7 @@ import { import { createRedirectsFromAstroRoutes } from '@astrojs/underscore-redirects'; import astroWhen from '@inox-tools/astro-when'; import { AstroError } from 'astro/errors'; -import { defaultServerConditions } from 'vite'; +import { defaultClientConditions } from 'vite'; import { type GetPlatformProxyOptions, getPlatformProxy } from 'wrangler'; import { type CloudflareModulePluginExtra, @@ -223,7 +223,7 @@ export default function createIntegration(args?: Options): AstroIntegration { // (previously supported in esbuild instead: https://github.com/withastro/astro/pull/7092) vite.ssr ||= {}; vite.ssr.resolve ||= {}; - vite.ssr.resolve.conditions ||= [...defaultServerConditions]; + vite.ssr.resolve.conditions ||= [...defaultClientConditions]; vite.ssr.resolve.conditions.push('workerd', 'worker'); vite.ssr.target = 'webworker'; diff --git a/packages/integrations/cloudflare/test/fixtures/with-vue/astro.config.mjs b/packages/integrations/cloudflare/test/fixtures/with-vue/astro.config.mjs new file mode 100644 index 000000000..4a4fbd8a4 --- /dev/null +++ b/packages/integrations/cloudflare/test/fixtures/with-vue/astro.config.mjs @@ -0,0 +1,9 @@ +import cloudflare from '@astrojs/cloudflare'; +import vue from "@astrojs/vue"; +import { defineConfig } from 'astro/config'; + +export default defineConfig({ + integrations: [vue()], + adapter: cloudflare(), + output: 'server', +}); diff --git a/packages/integrations/cloudflare/test/fixtures/with-vue/package.json b/packages/integrations/cloudflare/test/fixtures/with-vue/package.json new file mode 100644 index 000000000..bbf7b5319 --- /dev/null +++ b/packages/integrations/cloudflare/test/fixtures/with-vue/package.json @@ -0,0 +1,11 @@ +{ + "name": "@test/astro-cloudflare-with-vue", + "version": "0.0.0", + "private": true, + "dependencies": { + "@astrojs/cloudflare": "workspace:*", + "@astrojs/vue": "^5.0.1", + "astro": "^5.0.0", + "vue": "^3.5.13" + } +} diff --git a/packages/integrations/cloudflare/test/fixtures/with-vue/src/components/Component.vue b/packages/integrations/cloudflare/test/fixtures/with-vue/src/components/Component.vue new file mode 100644 index 000000000..70630a9a4 --- /dev/null +++ b/packages/integrations/cloudflare/test/fixtures/with-vue/src/components/Component.vue @@ -0,0 +1,3 @@ +<template> + <div class="vue">Vue Content</div> +</template> diff --git a/packages/integrations/cloudflare/test/fixtures/with-vue/src/pages/index.astro b/packages/integrations/cloudflare/test/fixtures/with-vue/src/pages/index.astro new file mode 100644 index 000000000..fc04d52ac --- /dev/null +++ b/packages/integrations/cloudflare/test/fixtures/with-vue/src/pages/index.astro @@ -0,0 +1,13 @@ +--- +import Component from '../components/Component.vue'; +--- + +<html> +<head> + <title>Testing</title> +</head> +<body> +<h1>Testing</h1> +<Component /> +</body> +</html> diff --git a/packages/integrations/cloudflare/test/with-vue.test.js b/packages/integrations/cloudflare/test/with-vue.test.js new file mode 100644 index 000000000..60e210750 --- /dev/null +++ b/packages/integrations/cloudflare/test/with-vue.test.js @@ -0,0 +1,37 @@ +import * as assert from 'node:assert/strict'; +import { after, before, describe, it } from 'node:test'; +import { fileURLToPath } from 'node:url'; +import * as cheerio from 'cheerio'; +import { astroCli, wranglerCli } from './_test-utils.js'; + +const root = new URL('./fixtures/with-vue/', import.meta.url); + +describe('Vue', () => { + let wrangler; + before(async () => { + await astroCli(fileURLToPath(root), 'build'); + + wrangler = wranglerCli(fileURLToPath(root)); + await new Promise((resolve) => { + wrangler.stdout.on('data', (data) => { + // console.log('[stdout]', data.toString()); + if (data.toString().includes('http://127.0.0.1:8788')) resolve(); + }); + wrangler.stderr.on('data', (data) => { + // console.log('[stderr]', data.toString()); + }); + }); + }); + + after((done) => { + wrangler.kill(); + }); + + it('renders the vue component', async () => { + const res = await fetch('http://127.0.0.1:8788/'); + assert.equal(res.status, 200); + const html = await res.text(); + const $ = cheerio.load(html); + assert.equal($('.vue').text(), 'Vue Content'); + }); +}); |