nodeを使用してwebpackをバックグラウンドで実行していますか?
はい、絶対に。ここでは多くのことが起こっていますが、最終的にはwebpack
とwebpack-dev-middleware
の両方がこれを処理しています。
UseWebpackDevMiddleware
の呼び出しから始まります。例えば:私はすでに言ったように
app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
{
HotModuleReplacement = true
});
、そこここに舞台裏で起こってたくさんだ、私はちょうど遊んで主要部分の概要を説明します。ここでUseWebpackDevMiddleware
(source)からコードの重要な行は次のとおり
nodeServices.InvokeExportAsync<WebpackDevServerInfo>(
nodeScript.FileName,
"createWebpackDevServer",
JsonConvert.SerializeObject(devServerOptions)).Result;
ASP.NETコアとNodeJsとの間の通信が発生するInvokeExortAsync
関数です。 nodeServices
変数はHttpNodeInstance
のインスタンスで、子はOutOfProcessNodeInstance
です。それが構築されていますときOutOfProcessNodeInstance
クラスがそう(source)のように、NodeJsサーバを生成します:
_nodeProcess = LaunchNodeProcess(startInfo);
これは、エントリポイント-http.jsスクリプトファイル(source)を使用して、NodeJsサーバーを実行して終了します。これには多くのコードが含まれていますが、最終的には、呼び出されたリクエストをlistenするHTTPサーバーを作成してInvokeExportAsync
にします。
ここで呼び出されているJavaScript関数、createWebpackDevServer
(source)は、例外処理簡潔にするため削除して、次のようになります。
export function createWebpackDevServer(callback) {
let aspNetWebpack = require('aspnet-webpack');
return aspNetWebpack.createWebpackDevServer.apply(this, arguments);
}
コードの多くは、が呼び出されてcreateWebpackDevServer
のためにあります(source)ですのでここでは取り上げませんが、webpack-dev-middleware(source)を使用して接続サーバー(source)を実行することになります。
私はあなた自身の探査のための十分な説明と出発点を与えることを願っています。
この回答は役に立ちましたか?あなたが私に試して説明してほしいことが他にありますか? –
それは素晴らしい答えです、ありがとう! –