OK, here’s the complete solution for those who may be interested:
chainWebpack (chain, { isServer, isClient }) {
chain
.output
.filename('js/[name].js')
.chunkFilename('js/[name].js')
chain
.plugin('mini-css-extract')
.tap(args => [{ filename: 'css/[name].css' }, ...args]);
},