10

私のindex.htmlが置かれているwwwrootからVisual Studioのソリューションファイルに含まれていないnode_modulesフォルダにアクセスする方法を教えてください。そのindex.htmlファイルは、angular.jsのようなnpmがインストールしたパッケージを参照する必要があります。asp.netのwwwrootからnode_modulesフォルダにアクセスする方法vnextプロジェクト

どのようにですか?

node_modulesフォルダ全体をwwwrootにコピーしたくありません。これらが...それはすべてをスローダウンしてハングアップしますので、私は解決策にnode_modulesフォルダを含めたくない...

そこに生きるためのファイルではありませんフロントエンドの開発をしていない属しているようですVS ...

答えて

10

wwwroot以外のファイルにアクセスすることはできません。 wwwrootフォルダーは、ホストするときに外部からアクセスできるパブリックフォルダーです。

それ以上のものはすべてオフです。

一般的な公開プロセスは、ASP.NET Webプロジェクトがコンパイルまたは公開されたときに実行されるぎこちなくまたは嫌な仕事で、そこでタスクを実行し、wwwrootフォルダ内の必要なファイル、つまりwwwroot/libsまたはwwwdata/js

もちろん、手動でファイルをコピーすることもできますが、特に多くの依存関係を更新すると、手動で追跡するのが難しくなります。

ソリューションに表示されていない間に(Dependencies/npmセクションに間接的に表示されますが)、ソリューションエクスプローラの上部にある[すべてのファイルを表示]ボタンを押して、必要なファイルをコピーして表示することもできます。

しかし、それは、それのためのグルップタスクを設定することをお勧めしますが、それはこの質問の範囲外です。

+0

をだからあなたは/ wwwrootに/ libsににコピーする必要がnode_modules内のすべての.jsファイルに対する一気のタスクの設定をアドバイス/し、/ wwwrootにからそれを参照します/index.html? – Elisabeth

+0

@Elisabeth:はい、これは意図したワークフローです。実際に必要なファイルをコピーするだけです。 – Tseng

+0

@Tseng試しましたが、たくさんのファイルがコピーされていると、Visual Studioは一瞬フリーズします。それを修正する計画されたタスクはありますか?それはそれをコピーするための適切な方法ではないように私は本当に気にしています。 –

12

少なくとも二つのまともな選択肢があります。

  • app.UseStaticFilesを使用して他のフォルダをサーブ。元の解決策はOde to Codeです。 Visual Studioではローカル .npmrcファイルがprefix = wwwroot/node_modulesと設定されていないため、 の開発に使用します。理想的には、生産のために node_modulesをバンドルする必要があります。 import機能(ES2015)を使用してスクリプトを自動的にバンドルできるnpm rollup pluginがあります。

  • CDN(例:unpkg.com)のサーブノードモジュール。これはかなり単純ですが、唯一の欠点はCDNの 応答時間です。特に、開発目的のためにブラウザのキャッシュを無効にした場合は特にそうです。

ここでは、ASP.NETコアのフォルダを提供するコードを示します。あなただけStartupクラスに変更する必要があります:

関連する問題