Skip to content

Commit

Permalink
[chore] do all server building in one file (#3155)
Browse files Browse the repository at this point in the history
* [chore] do all server building in one file

* Update packages/kit/src/core/build/build_server.js

* Update packages/kit/src/core/build/build_server.js

Co-authored-by: Rich Harris <[email protected]>
  • Loading branch information
benmccann and Rich-Harris authored Dec 31, 2021
1 parent 630e6d0 commit f16f457
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 39 deletions.
43 changes: 39 additions & 4 deletions packages/kit/src/core/build/build_server.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import fs from 'fs';
import path from 'path';
import { svelte } from '@sveltejs/vite-plugin-svelte';
import { mkdirp } from '../../utils/filesystem.js';
import { deep_merge } from '../../utils/object.js';
import { print_config_conflicts } from '../config/index.js';
import { posixify, resolve_entry } from '../utils.js';
import { create_build } from './utils.js';
import { create_build, find_deps } from './utils.js';
import { SVELTE_KIT } from '../constants.js';
import { s } from '../../utils/misc.js';

Expand Down Expand Up @@ -121,10 +122,12 @@ export class App {
* output_dir: string;
* }} options
* @param {string} runtime
* @param {{ vite_manifest: import('vite').Manifest, assets: import('rollup').OutputAsset[] }} client
*/
export async function build_server(
{ cwd, assets_base, config, manifest_data, build_dir, output_dir },
runtime
runtime,
client
) {
let hooks_file = resolve_entry(config.kit.files.hooks);
if (!hooks_file || !fs.existsSync(hooks_file)) {
Expand Down Expand Up @@ -245,10 +248,42 @@ export async function build_server(
}
});

/** @type {import('vite').Manifest} */
const vite_manifest = JSON.parse(fs.readFileSync(`${output_dir}/server/manifest.json`, 'utf-8'));

const styles_lookup = new Map();
if (config.kit.amp) {
client.assets.forEach((asset) => {
if (asset.fileName.endsWith('.css')) {
styles_lookup.set(asset.fileName, asset.source);
}
});
}

mkdirp(`${output_dir}/server/nodes`);
manifest_data.components.forEach((component, i) => {
const file = `${output_dir}/server/nodes/${i}.js`;

const js = new Set();
const css = new Set();
find_deps(component, client.vite_manifest, js, css);

const styles = config.kit.amp && Array.from(css).map((file) => styles_lookup.get(file));

const node = `import * as module from '../${vite_manifest[component].file}';
export { module };
export const entry = '${client.vite_manifest[component].file}';
export const js = ${JSON.stringify(Array.from(js))};
export const css = ${JSON.stringify(Array.from(css))};
${styles ? `export const styles = ${s(styles)}` : ''}
`.replace(/^\t\t\t/gm, '');

fs.writeFileSync(file, node);
});

return {
chunks,
/** @type {import('vite').Manifest} */
vite_manifest: JSON.parse(fs.readFileSync(`${output_dir}/server/manifest.json`, 'utf-8')),
vite_manifest,
methods: get_methods(cwd, chunks, manifest_data)
};
}
Expand Down
38 changes: 3 additions & 35 deletions packages/kit/src/core/build/index.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
import fs, { writeFileSync } from 'fs';
import fs from 'fs';
import path from 'path';
import { mkdirp, rimraf } from '../../utils/filesystem.js';
import { rimraf } from '../../utils/filesystem.js';
import create_manifest_data from '../create_manifest_data/index.js';
import { SVELTE_KIT } from '../constants.js';
import { posixify, resolve_entry } from '../utils.js';
import { generate_manifest } from '../generate_manifest/index.js';
import { s } from '../../utils/misc.js';
import { build_service_worker } from './build_service_worker.js';
import { build_client } from './build_client.js';
import { build_server } from './build_server.js';
import { find_deps } from './utils.js';

/**
* @param {import('types/config').ValidatedConfig} config
Expand Down Expand Up @@ -47,37 +45,7 @@ export async function build(config, { cwd = process.cwd(), runtime = './kit.js'
};

const client = await build_client(options);
const server = await build_server(options, runtime);

const styles_lookup = new Map();
if (options.config.kit.amp) {
client.assets.forEach((asset) => {
if (asset.fileName.endsWith('.css')) {
styles_lookup.set(asset.fileName, asset.source);
}
});
}

mkdirp(`${output_dir}/server/nodes`);
options.manifest_data.components.forEach((component, i) => {
const file = `${output_dir}/server/nodes/${i}.js`;

const js = new Set();
const css = new Set();
find_deps(component, client.vite_manifest, js, css);

const styles = config.kit.amp && Array.from(css).map((file) => styles_lookup.get(file));

const node = `import * as module from '../${server.vite_manifest[component].file}';
export { module };
export const entry = '${client.vite_manifest[component].file}';
export const js = ${JSON.stringify(Array.from(js))};
export const css = ${JSON.stringify(Array.from(css))};
${styles ? `export const styles = ${s(styles)}` : ''}
`.replace(/^\t\t\t/gm, '');

writeFileSync(file, node);
});
const server = await build_server(options, runtime, client);

if (options.service_worker_entry_file) {
if (config.kit.paths.assets) {
Expand Down

0 comments on commit f16f457

Please sign in to comment.