10

Jak uzyskać dostęp do folderu node_modules, który nie jest zawarty w pliku wizualnego rozwiązania studyjnego ze strony wwwroot, na której znajduje się mój plik index.html. Ten plik index.html musi odwoływać się do zainstalowanych pakietów npm, takich jak angular.js.Jak uzyskać dostęp do folderu node_modules z wwwroot w asp.net projekt vnext

Ale jak?

Nie chcę skopiować całego folderu node_modules na wwwroot. Ci nie są pliki tam mieszkać ...

Nie chcę aby to folder node_modules do rozwiązania, ponieważ to spowolni wszystko i odłóż ...

Wydaje rozwój Frontend nie należy w VS ...

Odpowiedz

10

Nie należy uzyskiwać dostępu do plików spoza zestawu wwwroot. Folder wwwroot jest folderem publicznym dostępnym z zewnątrz, gdy go hostujesz.

Wszystko ponad to, jest poza zasięgiem.

Typowy proces wydawniczy jest, że masz zadanie łykiem lub grunt, który jest uruchamiany, gdy webowy ASP.NET jest skompilowany lub publikowane, to uruchomić zadania tam i skopiować potrzebne pliki wewnątrz wwwroot folderu, tzn wwwroot/libs lub wwwdata/js.

Oczywiście można również ręcznie skopiować pliki, ale jest to raczej złe, szczególnie w przypadku aktualizacji wielu zależności, które trudno jest śledzić ręcznie.

Chociaż nie jest wyświetlany w rozwiązaniu (tylko pośrednio, w sekcji Dependencies/npm), nadal można go wyświetlić, klikając przycisk "Pokaż wszystkie pliki" w Eksploratorze rozwiązań i skopiuj potrzebne pliki.

Ale najlepiej jest ustawić dla niego zadanie, ale to wykracza poza zakres tego pytania.

+0

więc doradzić skonfigurować zadanie haustem dla wszystkich plików .js w node_modules które muszą być skopiowane do/wwwroot/libs/a następnie odwołać go z/wwwroot /index.html? – Elisabeth

+0

@Elisabeth: Tak, to jest zamierzony przepływ pracy. Po prostu skopiuj pliki, które rzeczywiście potrzebujesz. – Tseng

+0

@Tseng Próbowałem, ale jeśli jest dużo kopiowanych plików, Visual Studio zamiera na chwilę. Czy istnieje planowane zadanie, aby to naprawić? Naprawdę przeszkadza mi to, ponieważ wydaje się, że nie jest to właściwy sposób na kopiowanie. –

12

Istnieją co najmniej dwa sane wybory:

  • służyć innym foldery za pomocą app.UseStaticFiles. Oryginalne rozwiązanie pochodzi z Ode to Code. Używam go do rozwoju , ponieważ Visual Studio nie wydaje się szanować lokalnego pliku skonfigurowanego z prefix = wwwroot/node_modules. W idealnym przypadku do produkcji powinien być dołączony pakiet node_modules. Istnieje npm rollup plugin, który może automatycznie pakować skrypty za pomocą funkcji import (ES2015).

  • Serw element_węzłów z CDN (np. Unpkg.com). Jest to dość proste, jedyną wadą jest czas odpowiedzi CDN , szczególnie jeśli wyłączono buforowanie przeglądarki dla celów rozwojowych .

Oto kod do obsługi folderów w środowisku ASP.NET Core. Wystarczy tylko zmienić klasę Startup:

Powiązane problemy