From 4b5b30a6351caad39a449a62dc0f3e0aa3dc44cd Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 19 Nov 2022 15:46:07 -0600 Subject: [PATCH] fix: only use Nitro during serve, build (#156) Closes #151 --- .../src/lib/vite-nitro-plugin.spec.ts | 6 +- .../platform/src/lib/vite-nitro-plugin.ts | 60 +++++++++++-------- 2 files changed, 38 insertions(+), 28 deletions(-) diff --git a/packages/platform/src/lib/vite-nitro-plugin.spec.ts b/packages/platform/src/lib/vite-nitro-plugin.spec.ts index 3e84a57b6..e2f999882 100644 --- a/packages/platform/src/lib/vite-nitro-plugin.spec.ts +++ b/packages/platform/src/lib/vite-nitro-plugin.spec.ts @@ -17,7 +17,7 @@ describe('viteNitroPlugin', () => { expect(viteNitroPlugin({}).name).toEqual('vite-nitro-plugin'); }); - it(`should have the route middleware "/api" `, async () => { + it(`should not call the route middleware in test mode `, async () => { // Arrange const spy = vi.spyOn(mockViteDevServer.middlewares, 'use'); @@ -25,7 +25,7 @@ describe('viteNitroPlugin', () => { await (viteNitroPlugin({}).configureServer as any)(mockViteDevServer); // Assert - expect(spy).toHaveBeenCalledTimes(1); - expect(spy).toHaveBeenCalledWith('/api', expect.anything()); + expect(spy).toHaveBeenCalledTimes(0); + expect(spy).not.toHaveBeenCalledWith('/api', expect.anything()); }); }); diff --git a/packages/platform/src/lib/vite-nitro-plugin.ts b/packages/platform/src/lib/vite-nitro-plugin.ts index 3f32f95b8..954064b6a 100644 --- a/packages/platform/src/lib/vite-nitro-plugin.ts +++ b/packages/platform/src/lib/vite-nitro-plugin.ts @@ -15,39 +15,49 @@ export function viteNitroPlugin(opts?: NitroConfig): Plugin { buildDir: '../dist/.nitro', ...opts, }; + let isBuild = false; + let isServe = false; + let isTest = process.env['NODE_ENV'] === 'test' || !!process.env['VITEST']; return { name: 'vite-nitro-plugin', - + config(_config, { command }) { + isServe = command === 'serve'; + isBuild = command === 'build'; + }, async configureServer(viteServer: ViteDevServer) { - const { createNitro, createDevServer, build, prepare } = - await loadEsmModule('nitropack'); + if (isServe && !isTest) { + const { createNitro, createDevServer, build, prepare } = + await loadEsmModule('nitropack'); - const nitro = await createNitro({ ...nitroConfig, dev: true }); - const server = createDevServer(nitro); - await prepare(nitro); - await build(nitro); - viteServer.middlewares.use('/api', toNodeListener(server.app)); - console.log( - `\n\nThe '@analogjs/platform' successfully started.\nThe server endpoints are accessible under the "/api"` - ); + const nitro = await createNitro({ ...nitroConfig, dev: true }); + const server = createDevServer(nitro); + await prepare(nitro); + await build(nitro); + viteServer.middlewares.use('/api', toNodeListener(server.app)); + console.log( + `\n\nThe '@analogjs/platform' successfully started.\nThe server endpoints are accessible under the "/api"` + ); + } }, async closeBundle() { - const { createNitro, build, prepare } = await loadEsmModule< - typeof import('nitropack') - >('nitropack'); + if (isBuild) { + const { createNitro, build, prepare } = await loadEsmModule< + typeof import('nitropack') + >('nitropack'); - const nitro = await createNitro({ - ...nitroConfig, - baseURL: '/api', - dev: false, - }); - await prepare(nitro); - await build(nitro); - await nitro.close(); - console.log( - `\n\nThe '@analogjs/platform' server has been successfully built.` - ); + const nitro = await createNitro({ + ...nitroConfig, + baseURL: '/api', + dev: false, + }); + await prepare(nitro); + await build(nitro); + await nitro.close(); + console.log( + `\n\nThe '@analogjs/platform' server has been successfully built.` + ); + } }, }; }