mirror of
https://github.com/kevin-DL/sapper.git
synced 2026-01-15 20:34:44 +00:00
work in progress
This commit is contained in:
@@ -2,14 +2,9 @@ import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import mkdirp from 'mkdirp';
|
||||
import rimraf from 'rimraf';
|
||||
import { create_compilers, create_app, create_assets } from 'sapper/core.js';
|
||||
import { create_compilers, create_app, create_routes, create_serviceworker } from 'sapper/core.js';
|
||||
|
||||
export default function build({
|
||||
src,
|
||||
dest,
|
||||
dev,
|
||||
entry
|
||||
}: {
|
||||
export default async function build({ src, dest, dev, entry }: {
|
||||
src: string;
|
||||
dest: string;
|
||||
dev: boolean;
|
||||
@@ -18,11 +13,32 @@ export default function build({
|
||||
mkdirp.sync(dest);
|
||||
rimraf.sync(path.join(dest, '**/*'));
|
||||
|
||||
// create main.js and server-routes.js
|
||||
create_app({ dev, entry, src });
|
||||
const routes = create_routes({ src });
|
||||
|
||||
// create app/manifest/client.js and app/manifest/server.js
|
||||
create_app({ routes, src, dev });
|
||||
|
||||
const { client, server, serviceworker } = create_compilers();
|
||||
|
||||
const client_stats = await compile(client);
|
||||
fs.writeFileSync(path.join(dest, 'client_info.json'), JSON.stringify(client_stats.toJson()));
|
||||
|
||||
await compile(server);
|
||||
|
||||
if (serviceworker) {
|
||||
create_serviceworker({
|
||||
routes,
|
||||
client_files: client_stats.toJson().assets.map((chunk: { name: string }) => `/client/${chunk.name}`),
|
||||
src
|
||||
});
|
||||
|
||||
await compile(serviceworker);
|
||||
}
|
||||
}
|
||||
|
||||
function compile(compiler: any) {
|
||||
return new Promise((fulfil, reject) => {
|
||||
function handleErrors(err, stats) {
|
||||
compiler.run((err: Error, stats: any) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
process.exit(1);
|
||||
@@ -32,29 +48,10 @@ export default function build({
|
||||
console.error(stats.toString({ colors: true }));
|
||||
reject(new Error(`Encountered errors while building app`));
|
||||
}
|
||||
}
|
||||
|
||||
const { client, server } = create_compilers();
|
||||
|
||||
client.run((err, client_stats) => {
|
||||
handleErrors(err, client_stats);
|
||||
const client_info = client_stats.toJson();
|
||||
fs.writeFileSync(
|
||||
path.join(dest, 'stats.client.json'),
|
||||
JSON.stringify(client_info, null, ' ')
|
||||
);
|
||||
|
||||
server.run((err, server_stats) => {
|
||||
handleErrors(err, server_stats);
|
||||
const server_info = server_stats.toJson();
|
||||
fs.writeFileSync(
|
||||
path.join(dest, 'stats.server.json'),
|
||||
JSON.stringify(server_info, null, ' ')
|
||||
);
|
||||
|
||||
create_assets({ src, dest, dev, client_info, server_info });
|
||||
fulfil();
|
||||
});
|
||||
else {
|
||||
fulfil(stats);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user