diff --git a/snowpack/src/commands/dev.ts b/snowpack/src/commands/dev.ts index dff1b05517..4425c1fd2f 100644 --- a/snowpack/src/commands/dev.ts +++ b/snowpack/src/commands/dev.ts @@ -81,6 +81,7 @@ import { } from '../util'; import {getInstallTargets, run as installRunner} from './install'; import {getPort, getServerInfoMessage, paintDashboard, paintEvent} from './paint'; +import {isBinaryFile} from 'isbinaryfile'; interface LoadResult { contents: T; @@ -315,7 +316,7 @@ function handleResponseError(req, res, err: Error | NotFoundError) { return; } logger.error(err.toString()); - logger.error(`[${status}] ${req.url}`, { + logger.error(`[500] ${req.url}`, { // @ts-ignore name: err.__snowpackBuildDetails?.name, }); @@ -340,7 +341,10 @@ export async function startServer(commandOptions: CommandOptions): Promise onWatchEvent(fileLoc) || undefined; + p.markChanged = (fileLoc) => { + knownETags.clear(); + onWatchEvent(fileLoc); + }; } if (config.devOptions.output === 'dashboard') { @@ -1017,6 +1021,7 @@ export async function startServer(commandOptions: CommandOptions): Promise null)); @@ -1146,6 +1151,15 @@ export async function startServer(commandOptions: CommandOptions): Promise(); + /** * Fully handle the response for a given request. This is used internally for * every response that the dev server sends, but it can also be used via the @@ -1156,19 +1170,30 @@ export async function startServer(commandOptions: CommandOptions): Promise onWatchEvent(fileLoc)); - watcher.on('change', (fileLoc) => onWatchEvent(fileLoc)); - watcher.on('unlink', (fileLoc) => onWatchEvent(fileLoc)); + watcher.on('add', (fileLoc) => { + knownETags.clear(); + onWatchEvent(fileLoc); + }); + watcher.on('unlink', (fileLoc) => { + knownETags.clear(); + onWatchEvent(fileLoc); + }); + watcher.on('change', (fileLoc) => { + onWatchEvent(fileLoc); + }); // Watch node_modules & rerun snowpack install if symlinked dep updates const symlinkedFileLocs = new Set(