mirror of
https://github.com/kevin-DL/sapper.git
synced 2026-01-14 12:04:39 +00:00
a few small tweaks
This commit is contained in:
@@ -1,33 +1,40 @@
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import mkdirp from 'mkdirp';
|
||||
import * as glob from 'glob';
|
||||
import create_routes from './create_routes';
|
||||
import { fudge_mtime, posixify, write } from './utils';
|
||||
import { posixify, write_if_changed } from './utils';
|
||||
import { dev } from '../config';
|
||||
import { Route } from '../interfaces';
|
||||
|
||||
// in dev mode, we avoid touching the fs unnecessarily
|
||||
let last_client_manifest: string = null;
|
||||
let last_server_manifest: string = null;
|
||||
|
||||
export default function create_app({ routes, dev_port }: {
|
||||
export function create_main_manifests({ routes, dev_port }: {
|
||||
routes: Route[];
|
||||
dev_port: number;
|
||||
dev_port?: number;
|
||||
}) {
|
||||
mkdirp.sync('app/manifest');
|
||||
|
||||
const client_manifest = generate_client(routes, dev_port);
|
||||
const server_manifest = generate_server(routes);
|
||||
|
||||
if (client_manifest !== last_client_manifest) {
|
||||
write(`app/manifest/client.js`, client_manifest);
|
||||
last_client_manifest = client_manifest;
|
||||
}
|
||||
write_if_changed(`app/manifest/client.js`, client_manifest);
|
||||
write_if_changed(`app/manifest/server.js`, server_manifest);
|
||||
}
|
||||
|
||||
if (server_manifest !== last_server_manifest) {
|
||||
write(`app/manifest/server.js`, server_manifest);
|
||||
last_server_manifest = server_manifest;
|
||||
}
|
||||
export function create_serviceworker_manifest({ routes, client_files }: {
|
||||
routes: Route[];
|
||||
client_files: string[];
|
||||
}) {
|
||||
const assets = glob.sync('**', { cwd: 'assets', nodir: true });
|
||||
|
||||
let code = `
|
||||
// This file is generated by Sapper — do not edit it!
|
||||
export const timestamp = ${Date.now()};
|
||||
|
||||
export const assets = [\n\t${assets.map((x: string) => `"${x}"`).join(',\n\t')}\n];
|
||||
|
||||
export const shell = [\n\t${client_files.map((x: string) => `"${x}"`).join(',\n\t')}\n];
|
||||
|
||||
export const routes = [\n\t${routes.filter((r: Route) => r.type === 'page' && !/^_[45]xx$/.test(r.id)).map((r: Route) => `{ pattern: ${r.pattern} }`).join(',\n\t')}\n];
|
||||
`.replace(/^\t\t/gm, '').trim();
|
||||
|
||||
write_if_changed('app/manifest/service-worker.js', code);
|
||||
}
|
||||
|
||||
function generate_client(routes: Route[], dev_port?: number) {
|
||||
@@ -1,26 +0,0 @@
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import glob from 'glob';
|
||||
import create_routes from './create_routes';
|
||||
import { fudge_mtime, posixify, write } from './utils';
|
||||
import { Route } from '../interfaces';
|
||||
|
||||
export default function create_serviceworker({ routes, client_files }: {
|
||||
routes: Route[];
|
||||
client_files: string[];
|
||||
}) {
|
||||
const assets = glob.sync('**', { cwd: 'assets', nodir: true });
|
||||
|
||||
let code = `
|
||||
// This file is generated by Sapper — do not edit it!
|
||||
export const timestamp = ${Date.now()};
|
||||
|
||||
export const assets = [\n\t${assets.map((x: string) => `"${x}"`).join(',\n\t')}\n];
|
||||
|
||||
export const shell = [\n\t${client_files.map((x: string) => `"${x}"`).join(',\n\t')}\n];
|
||||
|
||||
export const routes = [\n\t${routes.filter((r: Route) => r.type === 'page' && !/^_[45]xx$/.test(r.id)).map((r: Route) => `{ pattern: ${r.pattern} }`).join(',\n\t')}\n];
|
||||
`.replace(/^\t\t/gm, '').trim();
|
||||
|
||||
write('app/manifest/service-worker.js', code);
|
||||
}
|
||||
@@ -1,8 +1,13 @@
|
||||
import * as fs from 'fs';
|
||||
import * as sander from 'sander';
|
||||
|
||||
export function write(file: string, code: string) {
|
||||
fs.writeFileSync(file, code);
|
||||
fudge_mtime(file);
|
||||
const previous_contents = new Map();
|
||||
|
||||
export function write_if_changed(file: string, code: string) {
|
||||
if (code !== previous_contents.get(file)) {
|
||||
previous_contents.set(file, code);
|
||||
sander.writeFileSync(file, code);
|
||||
fudge_mtime(file);
|
||||
}
|
||||
}
|
||||
|
||||
export function posixify(file: string) {
|
||||
@@ -11,8 +16,8 @@ export function posixify(file: string) {
|
||||
|
||||
export function fudge_mtime(file: string) {
|
||||
// need to fudge the mtime so that webpack doesn't go doolally
|
||||
const { atime, mtime } = fs.statSync(file);
|
||||
fs.utimesSync(
|
||||
const { atime, mtime } = sander.statSync(file);
|
||||
sander.utimesSync(
|
||||
file,
|
||||
new Date(atime.getTime() - 999999),
|
||||
new Date(mtime.getTime() - 999999)
|
||||
|
||||
Reference in New Issue
Block a user