ASP.NET reactのSPAのひな型を流用してvueを使用する
ASP.NET
のreact
のSPAのひな型を流用してvue
を使用する方法を紹介します。
SPAのプロジェクトのひな型にreact
は用意されているのですが、vue
は用意されていません。
そのため、react
のひな型を作成した後、vue
に差し替える形でvue
のSPAプロジェクトを作成します。
reactプロジェクトの作成
最初に以下のコマンドでreact
のSPAのひな型を作成します。
$ dotnet new react
ClientApp
というフォルダがフロント部分(react
)の開発フォルダになります。
vue-cliに差し替え
ClientApp
フォルダの中身をvue-cli
のプロジェクトに差し替えます。
ClientApp
フォルダを削除後、以下のコマンドでvue-cli
のプロジェクトを作成します。
$ vue create client-app
client-app
フォルダが作成されたらフォルダ名をClientApp
にリネームします。
フォルダ名をClientApp
とすると、以下のエラーになってしまうため、ひとまずclient-app
で作成してからClientApp
にリネームします。
$ vue create ClientApp
Invalid project name: "ClientApp"
Warning: name can no longer contain capital letters
ASP.NET Coreの設定変更
以下のコマンドでVueCliMiddleware
をASP.NET Core
のプロジェクトに追加します。
$ dotnet add package VueCliMiddleware --version 3.1.2
VueCliMiddleware
は開発時にASP.NET Core
とvue-cli
を連携させるために必要になります。
Startup.cs
のファイルをvue-cli
の設定に合わせて修正します。
Startup.cs
using Microsoft.AspNetCore.SpaServices.ReactDevelopmentServer;
using VueCliMiddleware;
// ConfigureServicesファンクション
configuration.RootPath = "ClientApp/build";
configuration.RootPath = "ClientApp/dist";
// Configureファンクション
spa.UseReactDevelopmentServer(npmScript: "start");
spa.UseVueCli(npmScript: "serve");
csproj
ファイルも修正します。
プロジェクト名.csproj
<DistFiles Include="$(SpaRoot)build\**" />
<DistFiles Include="$(SpaRoot)dist\**" />
以上で設定は完了です。
動作確認
F5でデバッグ実行をします。
初回起動時は以下のダイアログが表示されるので、.NET Core
を選択してください。
.NET Core
を選択すると設定ファイルが作成されるので、再度F5でデバッグ実行をします。
ブラウザが自動で起動して、vue-cli
のトップページが起動されることを確認できます。
ソースの監視
上記の設定をした状態で、dotnet watch run
でソースを監視し、ソースを変更時はvue
の開発サーバーが再起動されます。(毎回npm run serve
が走る)
毎回vue
の初回ビルドで時間がかかるのは不便なので、ASP.NET
のサーバーとvue
のサーバーを個別に起動する方法があります。
その方法はASP.NET ソース変更時にクライアントサーバーを再起動させない方法で紹介しています。