/ /なぜwwwrootにbowerコンポーネントがインストールされているのでしょうか - gulp、bower、asp.net-core

bowerコンポーネントがwwwrootにインストールされているのはなぜですか?gulp、bower、asp.net-core

私がASP.NET 5で遊んでからしばらく時間が経ったので、bowerコンポーネントが現在デフォルトで入れられているのは私にとって驚きでした wwwrootlib フォルダ。 これはのためのケースです .bowerrc ファイル:

{
"directory": "wwwroot/lib"
}

以前のリリースでは、bowerコンポーネントは ./bower_components フォルダ、まだ私には意味があります。

私は私が必要だと思います gulp/grunt 自分のJavaScriptファイルとCSSファイルを作成してコピーするタスク wwwroot フォルダ。

明らかに私は何かを見逃しています、しかし私はそれについて私の頭をつかまえることもこの問題に関する適切な情報を見つけることもできません。

私の全てのbowerコンポーネント(なぜなら ソース特にデプロイする場合、 `wwwrootlib"フォルダにありますが、Asp.NET 5 Webアプリケーションをデプロイする上で望ましいワークフローは何ですか?

回答:

回答№1の13

その理由はbower_componentsフォルダだと思いますそれは、ファイルを編集するたびに、静的ファイルをwwwroot以下に配置する必要があるかどうかに関係なく、wwwroot以下のファイルをコピーするためにtaskrunnerを再度実行する必要があるためです。開発版と製品版の両方がwwwrootの下のどこかにある場合は、より効率的なワークフローです。そうすれば、run run taskrunnerを編集してからページを更新するのではなく、ページを編集して更新できます。

あなたのファイルの縮小/処理された製品版を作成するとき私が提案することはwwwroot / jsのような別のフォルダに粗いプロセスファイルを作ることです。

その場合、wwwroot / libフォルダーは、devバージョンのライブラリー・スクリプトのみがそこに存在するため、公開から除外することさえ可能です。

そうではない私自身のカスタムスクリプトを考えていますbowerコンポーネントはおそらくwwwroot / libの下に置くべきではないので、たぶん私はwwwroot / devの下に未整理のものを置き、wwwroot / jsの下にすべての制作物を処理しますファイルだから基本的に私たちは自分のバンドルをそのようにして作ります。

次の例に示すように、新しい環境タグとスクリプトtaghelperにより、開発用と本番用に異なるファイルの場所を簡単に指定できます。

<environment names="Development">
<script src="~/lib/jquery-validation/jquery.validate.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
</environment>
<environment names="Staging,Production">
<script src="//ajax.aspnetcdn.com/ajax/jquery.validation/1.11.1/jquery.validate.min.js"
asp-fallback-src="~/js/lib/jquery-validation/jquery.validate.js"
asp-fallback-test="window.jquery && window.jquery.validator">
</script>
<script src="//ajax.aspnetcdn.com/ajax/mvc/5.2.3/jquery.validate.unobtrusive.min.js"
asp-fallback-src="~/js/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
asp-fallback-test="window.jquery && window.jquery.validator && window.jquery.validator.unobtrusive">
</script>
</environment>

だから、プロダクションでcdnを使う簡単な方法があります。 CDN以外のファイルの場合、wwwrootまたはその下のフォルダー以外の場所を指すことはできません。したがって、wwwrootの外側のbower_componentsフォルダーにファイルを置くことは、スクリプトを指すことができる場所ではないためです。

私の開発版へのスクリプトリンクを作成するときカスタムスクリプト私は新しいtaghelper属性asp-append-version = "true"を使いたいが、これはファイルの内容のハッシュをURLに追加して、ファイルが編集または変更されたときはいつでも前のブラウザキャッシュを確実に回避する。そしてこれはtaskrunnerを実行する必要なしに起こります、私はただページを編集してリフレッシュします。

要約すると、以下のすべてのスクリプトがあります。wwwrootは、他の場所に持っていて、編集のたびにそれらを移動するためにtaskrunnerを実行する必要があるよりも優れたワークフローです。 wwwroot / libの下から余分な機能をすべて展開したくない場合は、taskrunnerを使用して目的の処理を別のフォルダに処理します。これは、wwwrootの外部にあるbower_componentsフォルダの場合と同じです。また、Webアプリケーションのproject.jsonで、wwwroot / libをpublishExcludeで公開しないようにします。


回答№2のための7

マイクロソフトは、マイクロソフトの新しいツールに慣れていなかった.NET開発者には多くの混乱が見られます。それらを移動するタスクを実行する必要がなく、これらのコンポーネントをwwwrootに入れることで、.NET開発者にとってこれを単純化しました。 (MSの従業員)Scott Hanselman氏によるものです。 ブログ投稿.