webpackとvue-loader v15ではまって解決した

webpack4+Vue単一ファイルコンポーネント+Babelの記事を参考にしたらはまった
最新版で学ぶwebpack 4入門 - BabelでES2018環境の構築(React, Vue, Three.js, jQueryのサンプル付き) - ICS MEDIA
結論からいうとvue-loaderのv15以上を扱う場合、以下の記述が必要だったらしい。

// webpack.config.js
const VueLoaderPlugin = require('vue-loader/lib/plugin')

module.exports = {
  // ...
  plugins: [
    new VueLoaderPlugin()
  ]
}

https://vue-loader.vuejs.org/migrating.html#a-plugin-is-now-required

記事はvue-loaderがv14のときの情報なので、それをそのままコピペするとこけて死ぬ。
これで解決した。やったぜ