yarn ワークスペースを使用して、モノリス webpack/koa プロジェクトを複数のパッケージに分割しました。「web」と呼ぶパッケージが 1 つあります。これは webpack ビルドです。次に、「サーバー」と呼ばれる別のものがあります。これは、webpack アーティファクトと API の両方を提供する koa です。
私が抱えている問題は、webpack ビルドが実行時にサーバー パッケージからの依存関係を解決しているように見えるため、失敗することです。
Web プロジェクトから webpack コンパイラを公開して、サーバー プロジェクトの dev で使用できるようにします。
const webpack = require('webpack')
const devConfig = require('./webpack.dev.js')
const compiler = webpack(devConfig)
module.exports = compiler
そして、これをミドルウェアとして Koa に貼り付けます。
import devWebpackCompiler from '@kb-front/web' // the web package
const webpackMiddleware = await koaWebpack({ compiler: devWebpackCompiler })
app.use(webpackMiddleware)
ここでは koa-webpack を使用していますが、'webpack-dev-middleware' と 'webpack-hot-client' を独自のラッピングで手動で使用しようとしましたが、まったく同じ動作が得られます。
私が得るのは次のようなものです:
ERROR in multi @babel/polyfill ../web/src/marko/marko-bootstrap ../web/src/materialize/kb-materialize.scss
Module not found: Error: Can't resolve 'babel-loader' in '/Users/viktor/dev/projects/kb-frontend/packages/server'
@ multi @babel/polyfill ../web/src/marko/marko-bootstrap ../web/src/materialize/kb-materialize.scss main[1]
など。サーバー プロジェクトに dep を追加してこれらを埋めようとしましたが、掘り下げる必要のない深いうさぎの穴ですよね?
Web ビルドと Express/koa サーバー ノード パッケージを分離して webpack-dev-middleware を使用する正しい方法は何ですか?
サーバー プロジェクトで ES6 モジュールを使用しています--experimental-modules
が、それが原因でしょうか?