From fb8d952eeb43c3ee1f258d627aae87f08cab8e17 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Sun, 21 Jan 2018 16:02:42 -0500 Subject: [PATCH] more tidying up --- src/core/build.js | 4 +--- src/core/{utils => }/create_app.js | 18 +++++++++--------- src/core/generate_asset_cache.js | 2 +- src/core/index.js | 2 +- src/middleware/create_watcher.js | 27 +++++++++++++-------------- src/middleware/index.js | 7 +++---- 6 files changed, 28 insertions(+), 32 deletions(-) rename src/core/{utils => }/create_app.js (82%) diff --git a/src/core/build.js b/src/core/build.js index 89fdfe2..3f0df53 100644 --- a/src/core/build.js +++ b/src/core/build.js @@ -1,11 +1,9 @@ -process.env.NODE_ENV = 'production'; - import * as fs from 'fs'; import * as path from 'path'; import mkdirp from 'mkdirp'; import rimraf from 'rimraf'; import get_compilers from './get_compilers.js'; -import create_app from './utils/create_app.js'; +import create_app from './create_app.js'; import generate_asset_cache from './generate_asset_cache.js'; export default function build({ dest, dev, entry, src }) { diff --git a/src/core/utils/create_app.js b/src/core/create_app.js similarity index 82% rename from src/core/utils/create_app.js rename to src/core/create_app.js index 26c72a5..ea9ea96 100644 --- a/src/core/utils/create_app.js +++ b/src/core/create_app.js @@ -1,12 +1,17 @@ import * as fs from 'fs'; import * as path from 'path'; -import create_routes from '../create_routes.js'; -// import { create_templates } from '../templates.js'; +import create_routes from './create_routes.js'; function posixify(file) { return file.replace(/[/\\]/g, '/'); } +function fudge_mtime(file) { + // need to fudge the mtime so that webpack doesn't go doolally + const { atime, mtime } = fs.statSync(file); + fs.utimesSync(file, new Date(atime.getTime() - 999999), new Date(mtime.getTime() - 999999)); +} + function create_app({ src, dev, entry }) { const routes = create_routes({ src }); @@ -38,10 +43,7 @@ function create_app({ src, dev, entry }) { } fs.writeFileSync(entry.client, main); - - // need to fudge the mtime, because webpack is soft in the head - const { atime, mtime } = fs.statSync(entry.client); - fs.utimesSync(entry.client, new Date(atime.getTime() - 999999), new Date(mtime.getTime() - 999999)); + fudge_mtime(entry.client); } function create_server_routes() { @@ -57,9 +59,7 @@ function create_app({ src, dev, entry }) { const exports = `export { ${routes.map(route => route.id)} };`; fs.writeFileSync(entry.server, `${imports}\n\n${exports}`); - - const { atime, mtime } = fs.statSync(entry.server); - fs.utimesSync(entry.server, new Date(atime.getTime() - 999999), new Date(mtime.getTime() - 999999)); + fudge_mtime(entry.server); } create_client_main(); diff --git a/src/core/generate_asset_cache.js b/src/core/generate_asset_cache.js index 4a6ce9d..1f65a6a 100644 --- a/src/core/generate_asset_cache.js +++ b/src/core/generate_asset_cache.js @@ -18,7 +18,7 @@ export default function generate_asset_cache({ src, dest, dev, client_info, serv const service_worker = generate_service_worker({ chunk_files, src }); const index = generate_index(main_file); - const routes = create_routes({ src }); // TODO rename update + const routes = create_routes({ src }); if (dev) { fs.writeFileSync(path.join(dest, 'service-worker.js'), service_worker); diff --git a/src/core/index.js b/src/core/index.js index b07a0b1..5b26df4 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -5,6 +5,6 @@ export { default as export } from './export.js'; export { default as generate_asset_cache } from './generate_asset_cache.js'; export { default as get_compilers } from './get_compilers.js'; export { default as create_routes } from './create_routes.js'; -export { default as create_app } from './utils/create_app.js'; +export { default as create_app } from './create_app.js'; export { templates }; \ No newline at end of file diff --git a/src/middleware/create_watcher.js b/src/middleware/create_watcher.js index c0a61e4..dd71321 100644 --- a/src/middleware/create_watcher.js +++ b/src/middleware/create_watcher.js @@ -1,7 +1,7 @@ import * as fs from 'fs'; import * as path from 'path'; import chalk from 'chalk'; -import { generate_asset_cache, create_routes } from 'sapper/core.js'; +import { generate_asset_cache, create_routes, create_app } from 'sapper/core.js'; import { dest } from '../config.js'; function deferred() { @@ -15,7 +15,7 @@ function deferred() { return d; } -export default function create_watcher({ compilers, src, onroutes }) { +export default function create_watcher({ compilers, dev, entry, src, onroutes }) { const deferreds = { client: deferred(), server: deferred() @@ -31,10 +31,11 @@ export default function create_watcher({ compilers, src, onroutes }) { const server_info = server_stats.toJson(); fs.writeFileSync(path.join(dest, 'stats.server.json'), JSON.stringify(server_info, null, ' ')); - return generate_asset_cache( - client_stats.toJson(), - server_stats.toJson() - ); + return generate_asset_cache({ + src, dest, dev, + client_info: client_stats.toJson(), + server_info: server_stats.toJson() + }); }); function watch_compiler(type) { @@ -63,7 +64,6 @@ export default function create_watcher({ compilers, src, onroutes }) { function watch_files(pattern, callback) { const watcher = chokidar.watch(pattern, { - ignoreInitial: true, persistent: false }); @@ -71,13 +71,6 @@ export default function create_watcher({ compilers, src, onroutes }) { watcher.on('change', callback); watcher.on('unlink', callback); - // watch('templates/main.js', create_app); - - // watch('routes/**/*.+(html|js|mjs)', () => { - // route_manager.update({ src }); - // create_app(); - // }); - // watch('templates/**.html', () => { // create_templates(); // // TODO reload current page? @@ -87,6 +80,12 @@ export default function create_watcher({ compilers, src, onroutes }) { watch_files('routes/**/*.+(html|js|mjs)', () => { const routes = create_routes({ src }); onroutes(routes); + + create_app({ dev, entry, src }); // TODO this calls `create_routes` again, we should pass `routes` to `create_app` instead + }); + + watch_files('templates/main.js', () => { + create_app({ dev, entry, src }); }); const watcher = { diff --git a/src/middleware/index.js b/src/middleware/index.js index 29d7ae6..3bb39c6 100644 --- a/src/middleware/index.js +++ b/src/middleware/index.js @@ -4,7 +4,7 @@ import mkdirp from 'mkdirp'; import rimraf from 'rimraf'; import serialize from 'serialize-javascript'; import escape_html from 'escape-html'; -import { create_routes, templates, create_app, get_compilers, generate_asset_cache } from 'sapper/core.js'; +import { create_routes, templates, get_compilers, generate_asset_cache } from 'sapper/core.js'; import create_watcher from './create_watcher.js'; import { dest, dev, entry, src } from '../config.js'; @@ -12,15 +12,14 @@ function connect_dev() { mkdirp.sync(dest); rimraf.sync(path.join(dest, '**/*')); - create_app({ dev, entry, src }); - const compilers = get_compilers(); let routes; const watcher = create_watcher({ + dev, entry, src, compilers, - on_routes_update: _ => { + onroutes: _ => { routes = _; } });