mirror of
https://github.com/kevin-DL/sapper.git
synced 2026-01-21 06:45:00 +00:00
robustify dev server port selection
This commit is contained in:
@@ -66,17 +66,19 @@ function create_hot_update_server(port: number, interval = 10000) {
|
|||||||
return { send };
|
return { send };
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function create_watcher(src: string, dir: string) {
|
export default async function dev(src: string, dir: string) {
|
||||||
rimraf.sync(dir);
|
rimraf.sync(dir);
|
||||||
mkdirp.sync(dir);
|
mkdirp.sync(dir);
|
||||||
|
|
||||||
const chokidar = require('chokidar');
|
const chokidar = require('chokidar');
|
||||||
|
|
||||||
// initial build
|
// initial build
|
||||||
const routes = create_routes({ src });
|
const dev_port = await require('get-port')(10000);
|
||||||
create_app({ routes, src, dev: true });
|
|
||||||
|
|
||||||
const hot_update_server = create_hot_update_server(23456); // TODO robustify port selection
|
const routes = create_routes({ src });
|
||||||
|
create_app({ routes, src, dev: true, dev_port });
|
||||||
|
|
||||||
|
const hot_update_server = create_hot_update_server(dev_port);
|
||||||
|
|
||||||
// TODO watch the configs themselves?
|
// TODO watch the configs themselves?
|
||||||
const compilers = create_compilers();
|
const compilers = create_compilers();
|
||||||
@@ -93,7 +95,7 @@ export default function create_watcher(src: string, dir: string) {
|
|||||||
|
|
||||||
watch_files('routes/**/*.+(html|js|mjs)', () => {
|
watch_files('routes/**/*.+(html|js|mjs)', () => {
|
||||||
const routes = create_routes({ src });
|
const routes = create_routes({ src });
|
||||||
create_app({ routes, src, dev: true });
|
create_app({ routes, src, dev: true, dev_port });
|
||||||
});
|
});
|
||||||
|
|
||||||
watch_files('app/template.html', () => {
|
watch_files('app/template.html', () => {
|
||||||
|
|||||||
@@ -5,18 +5,19 @@ import create_routes from './create_routes';
|
|||||||
import { fudge_mtime, posixify, write } from './utils';
|
import { fudge_mtime, posixify, write } from './utils';
|
||||||
import { Route } from '../interfaces';
|
import { Route } from '../interfaces';
|
||||||
|
|
||||||
export default function create_app({ routes, src, dev }: {
|
export default function create_app({ routes, src, dev, dev_port }: {
|
||||||
routes: Route[];
|
routes: Route[];
|
||||||
src: string;
|
src: string;
|
||||||
dev: boolean;
|
dev: boolean;
|
||||||
|
dev_port: number;
|
||||||
}) {
|
}) {
|
||||||
mkdirp.sync('app/manifest');
|
mkdirp.sync('app/manifest');
|
||||||
|
|
||||||
write('app/manifest/client.js', generate_client(routes, src, dev));
|
write('app/manifest/client.js', generate_client(routes, src, dev, dev_port));
|
||||||
write('app/manifest/server.js', generate_server(routes, src));
|
write('app/manifest/server.js', generate_server(routes, src));
|
||||||
}
|
}
|
||||||
|
|
||||||
function generate_client(routes: Route[], src: string, dev: boolean) {
|
function generate_client(routes: Route[], src: string, dev: boolean, dev_port?: number) {
|
||||||
let code = `
|
let code = `
|
||||||
// This file is generated by Sapper — do not edit it!
|
// This file is generated by Sapper — do not edit it!
|
||||||
export const routes = [
|
export const routes = [
|
||||||
@@ -43,13 +44,11 @@ function generate_client(routes: Route[], src: string, dev: boolean) {
|
|||||||
path.resolve(__dirname, 'src/hmr-client.js')
|
path.resolve(__dirname, 'src/hmr-client.js')
|
||||||
);
|
);
|
||||||
|
|
||||||
const PORT = 23456; // TODO robustify this — needs to be controlled by the dev task
|
|
||||||
|
|
||||||
code += `
|
code += `
|
||||||
|
|
||||||
if (module.hot) {
|
if (module.hot) {
|
||||||
import('${hmr_client}').then(client => {
|
import('${hmr_client}').then(client => {
|
||||||
client.connect(${PORT});
|
client.connect(${dev_port});
|
||||||
});
|
});
|
||||||
}`.replace(/^\t{3}/gm, '');
|
}`.replace(/^\t{3}/gm, '');
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user