7

Obecnie próbuję migrować stary projekt ASP.NET WebSite do Visual Studio 2015. Chciałbym użyć NPM/Gulp do automatycznego kompilacji plików LESS do CSS (zadanie zostało wykonane przez WebEssentials w VS 2013).Zmień lokalizację folderu node_modules

Dodałem plik package.json do projektu, aby załadować wymagane komponenty. Spowoduje to utworzenie folderu node_modules w katalogu głównym projektu WebSite i tutaj zaczyna się mój problem:

Ponieważ projekty WebSite nie mają pliku projektu, wszystkie pliki (i podkatalogi) znajdują się w folderze głównym projektu , są automatycznie częścią projektu. Z powodu głęboko zagnieżdżonej struktury katalogów wewnątrz node_modules prowadzi to do błędów z powodu zbyt długich nazw ścieżek.

Łatwym rozwiązaniem jest ustawienie atrybutu hidden w folderze node_modules (ale musi to być wykonane ręcznie przez każdego programistę).

Czy istnieje sposób, aby powiedzieć NPM, aby umieścić moduły węzłów w innym katalogu, np. jeden poziom powyżej projektu (..\node_modules), gdzie znajduje się plik rozwiązania?

Czy jest możliwe ustawienie ukrytego atrybutu w folderze z zadania-gulp (uruchamianego po załadowaniu projektu)?

+0

Można podejść do problemu na odwrót. Utwórz katalog główny swojej witryny w innym miejscu i użyj polecenia gulp do kompilowania źródeł i zapisania ich w folderze witryny (np. 'Public') , a następnie uruchom polecenie npm/gulp z katalogu rozwiązania, a następnie niech punkt wejścia na twojej stronie wskaże folder 'public'. – Rik

+0

@Rik: Nie jestem pewien, czy jest to możliwe z projektem ASP.NET * WebSite *, ale pomyślę o tym. Ponadto, jeśli to możliwe, wolałbym nie wprowadzać zbyt wielu zmian w tym starym projekcie. – M4N

+0

Ale dodajesz gdzieś pliki npm. wybierz dowolną lokalizację, która nie znajduje się w twoim folderze i użyj 'gulp.src(). pipe (dostuff) .gulp.dest (path/to/website/dir)' stamtąd. Z gulp.dest() możesz skopiować pliki w dowolne miejsce. Nie wymaga żadnych zmian strukturalnych. – Rik

Odpowiedz

1

podstawie odpowiedzi @ rik za, udało mi się rozwiązać ten problem:

Zamiast dodawania package.json i gulpfile.js do projektu stronie internetowej, dodałem je na poziomie rozwiązań (jako przedmioty roztworu). Oznacza to, że folder node_modules znajduje się teraz w katalogu rozwiązania na tym samym poziomie, co projekt (y) WebSite.

Jedyną inną zmianą było zmodyfikowanie ścieżek odpowiednio w gulpfile.js.

1

Możesz chcieć sprawdzić npm 3.0+. Instaluje moduły w maksymalnie płaskiej strukturze. Powinno to zmniejszyć długości ścieżek w katalogu modułów.

Od wydania zauważa

płaski, płaski, płaski!

Twoje zależności będą teraz zainstalowane maksymalnie płasko. O ile jest to możliwe, wszystkie zależności i zależności oraz zależności IIR są instalowane w folderze node_modules projektu bez zagnieżdżania. Zobaczysz tylko moduły zagnieżdżone pod sobą , gdy dwa (lub więcej) moduły mają sprzeczne zależności.

  • # 3697 Miejmy nadzieję, że wyeliminowanie większości przypadków, w których użytkownicy systemu Windows zakończyła się ścieżek, które były zbyt długo Explorer i innych
    standardowych narzędzi do czynienia.
  • # 6912 (# 4761 # 4037) Oznacza to również, że instalacje zostaną od razu odfiltrowane.
  • # 5827 Oddanie to rozciąga się nawet na git deps.
  • # 6936 (# 5698) Różne polecenia są teraz rozpoznawane.

To ma pewne znaczenie dla zachowania innych poleceń:

  • npm deinstalacji usuwa wszelkie zależności modułu, który został określony, które nie są wymagane przez inny moduł. Poprzednio,
    usuwałaby tylko te, które zostały zainstalowane pod nim,
    powodując pozostawienie porzucenia, jeśli kiedykolwiek odfundowałeś.
  • npm ls pokazuje teraz twoje drzewo zależności zorganizowane wokół tego, co wymaga czego, a nie gdzie te moduły znajdują się na dysku.
  • # 6937 Dedupe npm spłaszcza drzewo oprócz dedupowania.

https://github.com/npm/npm/releases/tag/v3.0.0

Dla modernizacji instalacji systemu Windows sprawdź ten pakiet NPM-okna-upgrade

+0

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić w nim istotne części odpowiedzi i podać link do odsyłacza. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. - [Z recenzji] (/ opinia/niskiej jakości-posts/10565078) –

+0

Dodano więcej szczegółów do odpowiedzi –

Powiązane problemy