Last night I threw away almost all the build config I’d been blinded by this spring while working on rewrite: webpack config, TypeScript integration, you name it. What I have left: a simple bunch of npm scripts that I can run in parallel in different terminal sessions:

{
  "scripts": {
    "clean": "rm -rf dist/*",
    "build:static": "cp static/* dist",
    "build:css": "sass --load-path=./node_modules src/style.scss dist/style.css",
    "watch:css": "sass --watch --load-path=./node_modules src/style.scss dist/style.css",
    "build:elm": "elm make src/Main.elm --output dist/app.js",
    "watch:elm": "watchexec -w src 'elm make src/Main.elm --output dist/app.js'"
  }
}

It’s not fancy, but it gets the job done just fine for the things I’m actually working on — rather than things I’ll need eventually — and that’s exacty the right balance at this point.