diff options
author | 2022-10-12 17:25:51 -0400 | |
---|---|---|
committer | 2022-10-12 17:25:51 -0400 | |
commit | e55af8a23233b6335f45b7a04b9d026990fb616c (patch) | |
tree | 62f47ae6e1fa56c04c045318c3a0d34674cb4a63 /packages/integrations/node/src/index.ts | |
parent | 2b7fb848bbe18942960c17a135c5a3769780512b (diff) | |
download | astro-e55af8a23233b6335f45b7a04b9d026990fb616c.tar.gz astro-e55af8a23233b6335f45b7a04b9d026990fb616c.tar.zst astro-e55af8a23233b6335f45b7a04b9d026990fb616c.zip |
Node.js standalone mode + support for astro preview (#5056)
* wip
* Deprecate buildConfig and move to config.build
* Implement the standalone server
* Stay backwards compat
* Add changesets
* correctly merge URLs
* Get config earlier
* update node tests
* Return the preview server
* update remaining tests
* swap usage and config ordering
* Update packages/astro/src/@types/astro.ts
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
* Update .changeset/metal-pumas-walk.md
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
* Update .changeset/metal-pumas-walk.md
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
* Update .changeset/stupid-points-refuse.md
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
* Update .changeset/stupid-points-refuse.md
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
* Link to build.server config
Co-authored-by: Fred K. Schott <fkschott@gmail.com>
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
Diffstat (limited to '')
-rw-r--r-- | packages/integrations/node/src/index.ts | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/packages/integrations/node/src/index.ts b/packages/integrations/node/src/index.ts index 53b94b916..80dfacdab 100644 --- a/packages/integrations/node/src/index.ts +++ b/packages/integrations/node/src/index.ts @@ -1,24 +1,48 @@ import type { AstroAdapter, AstroIntegration } from 'astro'; +import type { Options, UserOptions } from './types'; -export function getAdapter(): AstroAdapter { +export function getAdapter(options: Options): AstroAdapter { return { name: '@astrojs/node', serverEntrypoint: '@astrojs/node/server.js', + previewEntrypoint: '@astrojs/node/preview.js', exports: ['handler'], + args: options }; } -export default function createIntegration(): AstroIntegration { +export default function createIntegration(userOptions: UserOptions): AstroIntegration { + if(!userOptions?.mode) { + throw new Error(`[@astrojs/node] Setting the 'mode' option is required.`) + } + + let needsBuildConfig = false; + let _options: Options; return { name: '@astrojs/node', hooks: { 'astro:config:done': ({ setAdapter, config }) => { - setAdapter(getAdapter()); + needsBuildConfig = !config.build?.server; + _options = { + ...userOptions, + client: config.build.client?.toString(), + server: config.build.server?.toString(), + host: config.server.host, + port: config.server.port, + }; + setAdapter(getAdapter(_options)); if (config.output === 'static') { console.warn(`[@astrojs/node] \`output: "server"\` is required to use this adapter.`); } }, + 'astro:build:start': ({ buildConfig }) => { + // Backwards compat + if(needsBuildConfig) { + _options.client = buildConfig.client.toString(); + _options.server = buildConfig.server.toString(); + } + } }, }; } |