Chcę zaktualizować Bootstrap w ASP.NET Core za pomocą NuGet. Użyłem tego:
Install-Package bootstrap -Version 4.0.0
Dodał zależności, ale jak mam to teraz dodać do mojego projektu? Jaka jest ścieżka do lokalnych zależności NuGet?
Chcę zaktualizować Bootstrap w ASP.NET Core za pomocą NuGet. Użyłem tego:
Install-Package bootstrap -Version 4.0.0
Dodał zależności, ale jak mam to teraz dodać do mojego projektu? Jaka jest ścieżka do lokalnych zależności NuGet?
Odpowiedzi:
Jak inni już wspominali, menedżer pakietów Bower , który był zwykle używany do takich zależności w aplikacji, która nie opiera się na skomplikowanych skryptach po stronie klienta, jest na wyjściu i aktywnie zaleca przejście na inne rozwiązania:
..psst! Chociaż Bower jest utrzymywany, zalecamy przędzę i pakiet sieciowy do nowych projektów front-end!
Więc chociaż nadal możesz go teraz używać, Bootstrap również ogłosił, że porzuci wsparcie dla niego . W rezultacie wbudowane szablony ASP.NET Core są powoli edytowane, aby również od nich odejść.
Niestety nie ma jasnej drogi naprzód. Wynika to głównie z faktu, że aplikacje internetowe nieustannie przechodzą w stronę klienta, wymagając złożonych systemów kompilacji po stronie klienta i wielu zależności. Więc jeśli tworzysz coś takiego, być może już wiesz, jak to rozwiązać, i możesz rozszerzyć istniejący proces budowania, aby po prostu uwzględnić tam również Bootstrap i jQuery.
Ale nadal istnieje wiele aplikacji internetowych, które nie są tak ciężkie po stronie klienta, w których aplikacja nadal działa głównie na serwerze, a serwer wyświetla statyczne widoki. Bower wcześniej wypełnił to, ułatwiając po prostu publikowanie zależności po stronie klienta bez tak dużego procesu.
W świecie .NET mamy również NuGet, a przy poprzednich wersjach ASP.NET możemy również użyć NuGet do dodania zależności do niektórych zależności po stronie klienta, ponieważ NuGet po prostu umieściłby zawartość w naszym projekcie poprawnie. Niestety w nowym .csproj
formacie i nowym NuGet zainstalowane pakiety znajdują się poza naszym projektem, więc nie możemy po prostu odwoływać się do nich.
Pozostaje nam kilka opcji dodawania naszych zależności:
To właśnie robią obecnie szablony ASP.NET Core, które nie są aplikacjami jednostronicowymi. Kiedy używasz ich do tworzenia nowej aplikacji, wwwroot
folder zawiera po prostu folder lib
zawierający zależności:
Jeśli przyjrzysz się uważnie obecnym plikom, zobaczysz, że zostały pierwotnie umieszczone tam przez Bower w celu utworzenia szablonu, ale prawdopodobnie wkrótce się to zmieni. Podstawową ideą jest to, że pliki są kopiowane raz do wwwroot
folderu, więc możesz na nich polegać.
Aby to zrobić, możemy po prostu postępować zgodnie z wprowadzeniem Bootstrap i bezpośrednio pobrać skompilowane pliki . Jak wspomniano na stronie pobierania, nie obejmuje to jQuery , więc musimy pobrać ją również osobno; to nie zawiera Popper.js choć jeśli zdecydujemy się skorzystać z bootstrap.bundle
pliku później, które będziemy robić. W przypadku jQuery możemy po prostu pobrać pojedynczy „skompresowany plik produkcyjny” z witryny pobierania (kliknij prawym przyciskiem myszy łącze i wybierz z menu opcję „Zapisz łącze jako ...”).
Pozostaje nam kilka plików, które po prostu rozpakują i skopiują do wwwroot
folderu. Możemy również utworzyć lib
folder, aby było jaśniejsze, że są to zależności zewnętrzne:
To wszystko, czego potrzebujemy, więc teraz musimy tylko dostosować nasz _Layout.cshtml
plik, aby zawierał te zależności. W tym celu dodajemy następujący blok do <head>
:
<environment include="Development">
<link rel="stylesheet" href="~/lib/css/bootstrap.css" />
</environment>
<environment exclude="Development">
<link rel="stylesheet" href="~/lib/css/bootstrap.min.css" />
</environment>
I kolejny blok na samym końcu <body>
:
<environment include="Development">
<script src="~/lib/js/jquery-3.3.1.js"></script>
<script src="~/lib/js/bootstrap.bundle.js"></script>
</environment>
<environment exclude="Development">
<script src="~/lib/js/jquery-3.3.1.min.js"></script>
<script src="~/lib/js/bootstrap.bundle.min.js"></script>
</environment>
Możesz także po prostu dołączyć zminimalizowane wersje i pominąć <environment>
pomocników tagów, aby było to nieco prostsze. Ale to wszystko, co musisz zrobić, aby zacząć.
Bardziej nowoczesnym sposobem, również jeśli chcesz aktualizować swoje zależności, byłoby pobranie zależności z repozytorium pakietów NPM. Możesz do tego użyć NPM lub Yarn; w moim przykładzie użyję NPM.
Na początek musimy utworzyć package.json
plik dla naszego projektu, abyśmy mogli określić nasze zależności. Aby to zrobić, po prostu robimy to w oknie dialogowym „Dodaj nowy element”:
Kiedy już to zrobimy, musimy go edytować, aby uwzględnić nasze zależności. Powinno to wyglądać tak:
{
"version": "1.0.0",
"name": "asp.net",
"private": true,
"devDependencies": {
"bootstrap": "4.0.0",
"jquery": "3.3.1",
"popper.js": "1.12.9"
}
}
Zapisując, Visual Studio będzie już uruchamiać NPM, aby zainstalować za nas zależności. Zostaną zainstalowane w node_modules
folderze. Pozostaje więc tylko pobrać pliki stamtąd do naszego wwwroot
folderu. Możesz to zrobić na kilka sposobów:
bundleconfig.json
do tworzenia pakietów i minifikacjiMożemy użyć jednego z różnych sposobów bundleconfig.json
używania a do tworzenia pakietów i minifikacji, jak wyjaśniono w dokumentacji . Bardzo prostym sposobem jest po prostu użycie pakietu BuildBundlerMinifier NuGet, który automatycznie konfiguruje w tym celu zadanie kompilacji.
Po zainstalowaniu tego pakietu musimy utworzyć bundleconfig.json
w katalogu głównym projektu następującą zawartość:
[
{
"outputFileName": "wwwroot/vendor.min.css",
"inputFiles": [
"node_modules/bootstrap/dist/css/bootstrap.min.css"
],
"minify": { "enabled": false }
},
{
"outputFileName": "wwwroot/vendor.min.js",
"inputFiles": [
"node_modules/jquery/dist/jquery.min.js",
"node_modules/popper.js/dist/umd/popper.min.js",
"node_modules/bootstrap/dist/js/bootstrap.min.js"
],
"minify": { "enabled": false }
}
]
To zasadniczo konfiguruje, które pliki mają być połączone w jakie. Kiedy budujemy, widzimy, że pliki vendor.min.css
i vendor.js.css
są tworzone poprawnie. Więc wszystko, co musimy zrobić, to _Layouts.html
ponownie dostosować nasze, aby uwzględnić te pliki:
<!-- inside <head> -->
<link rel="stylesheet" href="~/vendor.min.css" />
<!-- at the end of <body> -->
<script src="~/vendor.min.js"></script>
Jeśli chcemy nieco bardziej zająć się programowaniem po stronie klienta, możemy również zacząć używać narzędzi, których byśmy tam używali. Na przykład Webpack, który jest bardzo często używanym narzędziem do tworzenia naprawdę wszystkiego. Ale możemy również zacząć od prostszego menedżera zadań, takiego jak Gulp, i samodzielnie wykonać kilka niezbędnych kroków.
W tym celu dodajemy gulpfile.js
do naszego katalogu głównego projektu, z następującą zawartością:
const gulp = require('gulp');
const concat = require('gulp-concat');
const vendorStyles = [
"node_modules/bootstrap/dist/css/bootstrap.min.css"
];
const vendorScripts = [
"node_modules/jquery/dist/jquery.min.js",
"node_modules/popper.js/dist/umd/popper.min.js",
"node_modules/bootstrap/dist/js/bootstrap.min.js",
];
gulp.task('build-vendor-css', () => {
return gulp.src(vendorStyles)
.pipe(concat('vendor.min.css'))
.pipe(gulp.dest('wwwroot'));
});
gulp.task('build-vendor-js', () => {
return gulp.src(vendorScripts)
.pipe(concat('vendor.min.js'))
.pipe(gulp.dest('wwwroot'));
});
gulp.task('build-vendor', gulp.parallel('build-vendor-css', 'build-vendor-js'));
gulp.task('default', gulp.series('build-vendor'));
Teraz musimy również dostosować nasze, package.json
aby mieć zależności od gulp
i gulp-concat
:
{
"version": "1.0.0",
"name": "asp.net",
"private": true,
"devDependencies": {
"bootstrap": "4.0.0",
"gulp": "^4.0.2",
"gulp-concat": "^2.6.1",
"jquery": "3.3.1",
"popper.js": "1.12.9"
}
}
Na koniec edytujemy nasze, .csproj
aby dodać następujące zadanie, które zapewnia, że nasze zadanie Gulp zostanie uruchomione podczas budowania projektu:
<Target Name="RunGulp" BeforeTargets="Build">
<Exec Command="node_modules\.bin\gulp.cmd" />
</Target>
Teraz, kiedy budujemy, default
uruchamiane jest zadanie Gulp, które uruchamia build-vendor
zadania, które następnie budują nasze vendor.min.css
i vendor.min.js
tak jak wcześniej. Więc po dostosowaniu naszych _Layout.cshtml
tak jak powyżej, możemy skorzystać z jQuery i Bootstrap.
Chociaż początkowa konfiguracja Gulpa jest nieco bardziej skomplikowana niż bundleconfig.json
powyższa, weszliśmy teraz do świata węzłów i możemy zacząć korzystać ze wszystkich innych fajnych narzędzi. Warto więc zacząć od tego.
Chociaż nagle stało się to o wiele bardziej skomplikowane niż w przypadku samego używania Bower, zyskujemy również dużą kontrolę dzięki tym nowym opcjom. Na przykład możemy teraz zdecydować, które pliki są faktycznie zawarte w wwwroot
folderze i jak dokładnie wyglądają. Możemy również wykorzystać to, aby wykonać pierwsze kroki w świecie programowania po stronie klienta za pomocą Node, co powinno przynajmniej trochę pomóc w krzywej uczenia się.
node -v
, i pobrać aktualną wersję tutaj na nodejs.org
Patrząc na to, wydaje się, że podejście LibMan działa najlepiej dla moich potrzeb z dodaniem Bootstrap. Podoba mi się, ponieważ jest teraz wbudowany w Visual Studio 2017 (15.8 lub nowszy) i ma własne okna dialogowe.
Aktualizacja 6/11/2020: bootstrap 4.1.3 jest teraz dodawany domyślnie w VS-2019.5 (podziękowania dla Haralda S. Hanssena za zauważenie).
Domyślna metoda, którą VS dodaje do projektów, używa Bower, ale wygląda na to, że jest w drodze. W nagłówku strony altany Microsoftu piszą:
Poniższe linki prowadzą do używania LibMan z ASP.NET Core w programie Visual Studio, gdzie pokazano, jak można dodać biblioteki libs za pomocą wbudowanego okna dialogowego:
W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy folder projektu, do którego mają zostać dodane pliki. Wybierz opcję Dodaj> Biblioteka po stronie klienta. Pojawi się okno dialogowe Dodaj bibliotekę po stronie klienta: [źródło: Scott Addie 2018 ]
Następnie dla bootstrapu po prostu (1) wybierz unpkg, (2) wpisz "bootstrap @ .." (3) Zainstaluj. Następnie wystarczy sprawdzić, czy wszystkie elementy zawarte w pliku _Layout.cshtml lub w innych miejscach są poprawne. Powinny być takie jak href = "~ / lib / bootstrap / dist / js / bootstrap ..." )
Wypróbuj Libmana , jest tak prosty jak Bower i możesz określić wwwroot / lib / jako folder pobierania.
Jaka jest dla mnie sztuczka:
1) Kliknij prawym przyciskiem myszy wwwroot> Dodaj> Biblioteka po stronie klienta
2) Wpisz „bootstrap” w polu wyszukiwania
3) Wybierz „Wybierz określone pliki”
4) Przewiń w dół i wybierz folder. W moim przypadku wybrałem „Twitter-bootstrap”
5) Sprawdź „css” i „js”
6) Kliknij „Instaluj”.
Kilka sekund później mam je wszystkie w folderze wwwroot. Zrób to samo dla wszystkich pakietów po stronie klienta, które chcesz dodać.
Libman wydaje się być teraz narzędziem preferowanym przez Microsoft. Jest zintegrowany z Visual Studio 2017 (15.8).
W tym artykule opisano, jak z niego korzystać, a nawet jak skonfigurować przywracanie wykonywane przez proces kompilacji.
Dokumentacja Bootstrap mówi, jakich plików potrzebujesz w swoim projekcie.
Poniższy przykład powinien działać jako konfiguracja dla libman.json.
{
"version": "1.0",
"defaultProvider": "cdnjs",
"libraries": [
{
"library": "twitter-bootstrap@4.2.1",
"destination": "wwwroot/lib/bootstrap",
"files": [
"js/bootstrap.bundle.js",
"css/bootstrap.min.css"
]
},
{
"library": "jquery@3.3.1",
"destination": "wwwroot/lib/jquery",
"files": [
"jquery.min.js"
]
}
]
}
Używamy bootstrap 4 w asp.net core, ale odwołujemy się do bibliotek z „npm” przy użyciu rozszerzenia „Package Installer” i okazało się, że jest to lepsze niż Nuget dla bibliotek JavaScript / CSS.
Następnie używamy rozszerzenia „Bundler & Minifier”, aby skopiować odpowiednie pliki do dystrybucji (z folderu npm node_modules, który znajduje się poza projektem) do wwwroot, tak jak lubimy w celu rozwoju / wdrożenia.
Niestety, będziesz mieć trudności z użyciem NuGet do zainstalowania Bootstrap (lub większości innych struktur JavaScript / CSS) w projekcie .NET Core. Jeśli spojrzysz na instalację NuGet, zobaczysz, że jest niezgodna:
jeśli musisz wiedzieć, gdzie są zależności pakietów lokalnych, znajdują się one teraz w katalogu twojego profilu lokalnego. to znaczy%userprofile%\.nuget\packages\bootstrap\4.0.0\content\Scripts
.
Proponuję jednak przejść na npm lub bower - jak w odpowiedzi Saineshwar.
BS4 jest teraz dostępny w .NET Core 2.2 . Na pewno w instalatorze SDK 2.2.105 x64. Korzystam z Visual Studio 2017 z nim. Jak dotąd dobrze nadaje się do nowych projektów aplikacji internetowych.
Dlaczego po prostu nie skorzystać z CDN? O ile nie musisz edytować kodu BS, wystarczy odwołać się do kodów w CDN.
Zobacz BS 4 CDN tutaj:
https://www.w3schools.com/bootstrap4/bootstrap_get_started.asp
Na dole strony.
Użyj pliku konfiguracyjnego nmp (dodaj go do swojego projektu internetowego), a następnie dodaj potrzebne pakiety w ten sam sposób, w jaki zrobiliśmy to przy użyciu bower.json i zapisz. Program Visual Studio pobierze go i zainstaluje. Pakiet znajdziesz pod węzłem nmp twojego projektu.