Czy kiedykolwiek wymyśliłeś „właściwy” sposób, aby to zrobić? Obecnie używam tylko jednego zadania, aby skopiować dane z node_modules do mojego katalogu publicznego.
sjmeverett
Użyłem go później jako komponentu altanki ...
Govan,
Odpowiedzi:
106
Zainstaluj jako npm install font-awesome --save-dev
W swoim pliku programowania mniej, możesz albo importować całą czcionkę niesamowitą mniej przy użyciu @import "node_modules/font-awesome/less/font-awesome.less", albo zajrzeć do tego pliku i zaimportować tylko potrzebne komponenty. Myślę, że to minimum dla podstawowych ikon:
/* adjust path as needed */@fa_path:"../node_modules/font-awesome/less";@import"@{fa_path}/variables.less";@import"@{fa_path}/mixins.less";@import"@{fa_path}/path.less";@import"@{fa_path}/core.less";@import"@{fa_path}/icons.less";
Pamiętaj, że nadal nie zaoszczędzisz tak wielu bajtów. Tak czy inaczej, skończysz zawierając między 2-3 tys. Linii niezminifikowanego kodu CSS.
Będziesz także musiał udostępniać same czcionki z folderu o nazwie /fonts/w katalogu publicznym. Możesz po prostu skopiować je tam za pomocą prostego zadania, na przykład:
Należy bardziej podkreślić, że czcionki musiały być również podawane do folderu z czcionkami ... Prawdopodobnie spędziłem godzinę próbując rozgryźć tę prostą rzecz.
W powyższym przykładzie musisz podążać za mniejszymi importami z następującym zastąpieniem, aby pliki czcionek z niesamowitymi czcionkami skopiowane przez gulp zostały znalezione po wdrożeniu:@fa-font-path: "/public/fonts";
CAK2
56
Musisz ustawić odpowiednią ścieżkę czcionki. na przykład
Będziesz musiał skopiować pliki w ramach procesu kompilacji. Na przykład możesz użyć npm postinstallskryptu, aby skopiować pliki do odpowiedniego katalogu:
W przypadku niektórych narzędzi do budowania istnieją już pakiety z niesamowitymi czcionkami. Na przykład pakiet internetowy zawiera pakiet font-awesome-webpack, który pozwala na proste require('font-awesome-webpack').
W webpack.config.js skonfiguruj copy-webpack-plugin . UWAGA: Domyślnym folderem dist w pakiecie webpack 4 jest „dist”, dlatego kopiujemy folder webfonts z node_modules do folderu dist.
Na koniec, w pliku main.scss , powiedz fontawesome, gdzie folder webfonts został skopiowany i zaimportuj żądane pliki SCSS z node_modules .
$fa-font-path:"/webfonts";// destination folder in dist//Adapt the path to be relative to your main.scss file@import"../node_modules/@fortawesome/fontawesome-free/scss/fontawesome";//Include at least one of the below, depending on what icons you want.//Adapt the path to be relative to your main.scss file@import"../node_modules/@fortawesome/fontawesome-free/scss/brands";@import"../node_modules/@fortawesome/fontawesome-free/scss/regular";@import"../node_modules/@fortawesome/fontawesome-free/scss/solid";@import"../node_modules/@fortawesome/fontawesome-free/scss/v4-shims";// if you also want to use `fa v4` like: `fa fa-address-book-o`
i zastosuj poniższe font-familydo żądanych regionów w dokumencie HTML, w których chcesz używać niesamowitych ikon.
Przykład :
body {
font-family:'Font Awesome 5 Free';// if you use fa v5 (regular/solid)// font-family: 'Font Awesome 5 Brands'; // if you use fa v5 (brands)}
FontAwesome zaleca, aby ich pakiet npm został zainstalowany jako plik devDependency. Aby to rozwiązanie działało (w środowisku produkcyjnym), czy pakiet powinien być instalowany jako zwykła zależność?
John J. Camilleri,
1
Odpowiadając na moje własne pytanie: tak, musi być zainstalowany z, --savea nie--save-dev
John J. Camilleri
5
Możesz dodać go między <head></head>tagiem w następujący sposób:
Edytuj (26.06.2017) - Zastrzeżenie: SĄ LEPSZE ODPOWIEDZI. PROSZĘ NIE UŻYWAĆ TEJ METODY. W chwili udzielenia tej pierwotnej odpowiedzi dobre narzędzia nie były tak powszechne. Przy obecnych narzędziach do kompilacji, takich jak webpack lub browserify, prawdopodobnie nie ma sensu używać tej odpowiedzi. Mogę to usunąć, ale myślę, że ważne jest, aby podkreślić różne dostępne opcje i możliwe zalecenia, a czego nie.
Nie sądzę, aby ktokolwiek chciał dołączyć katalog node_modules do kompilacji i bezpośrednio odnosić się do niego.
Fabian Leutgeb
5
Rozumiem, ale to wciąż opcja. Nie ma jednej odpowiedzi na rozwiązanie. :) Jeśli masz system sprzedaży wiązanej, możesz @import '../node_modules/...'polubić inne wskazane odpowiedzi.
Con Antonakos
1
w porównaniu z innymi odpowiedziami uważam, że tak jest najlepiej. nadal odwołujesz się do ścieżki względnej za pośrednictwem modułów node_modules w innych odpowiedziach. gdyby font-awesomezmieniła się lokalizacja pliku css , wymagałoby to poprawienia lub konserwacji tak samo, jak inne odpowiedzi. różnica polega na tym, że ta odpowiedź nie wymaga transpilacji ani zadań. po prostu umieszcza import dokładnie tam, gdzie powinien; w <link>tagu.
północnoamerykańska
3
Prosty forder npm będzie miał minimum 10 + MB, żaden użytkownik nie będzie chciał dodać tej wagi do projektu z jakiegokolwiek powodu. Celem npm jest pomoc w fazie rozwoju i zminimalizowanie / zmniejszenie rozmiaru produkcji po zbudowaniu. Nie myśl, że to dobra opcja, nawet jeśli działa. ; )
T04435
Dodałem następujące zastrzeżenie: W czasie, gdy otrzymałem tę pierwotną odpowiedź, dobre narzędzia nie były tak rozpowszechnione. Przy obecnych narzędziach do kompilacji, takich jak webpack lub browserify, prawdopodobnie nie ma sensu używać tej odpowiedzi. Mogę to usunąć, ale myślę, że ważne jest, aby podkreślić różne dostępne opcje i możliwe zalecenia, a czego nie.
Con Antonakos
3
Ponieważ obecnie uczę się node js, napotkałem również ten problem. Przede wszystkim zainstalowałem font-awesome za pomocą npm
npm install font-awesome --save-dev
potem ustawiłem folder statyczny na css i czcionki:
Odpowiedzi:
Zainstaluj jako
npm install font-awesome --save-dev
W swoim pliku programowania mniej, możesz albo importować całą czcionkę niesamowitą mniej przy użyciu
@import "node_modules/font-awesome/less/font-awesome.less"
, albo zajrzeć do tego pliku i zaimportować tylko potrzebne komponenty. Myślę, że to minimum dla podstawowych ikon:Pamiętaj, że nadal nie zaoszczędzisz tak wielu bajtów. Tak czy inaczej, skończysz zawierając między 2-3 tys. Linii niezminifikowanego kodu CSS.
Będziesz także musiał udostępniać same czcionki z folderu o nazwie
/fonts/
w katalogu publicznym. Możesz po prostu skopiować je tam za pomocą prostego zadania, na przykład:źródło
fa-font-path
w żądanej lokalizacji.@fa-font-path: "/public/fonts";
Musisz ustawić odpowiednią ścieżkę czcionki. na przykład
my-style.scss
źródło
../assets/font-awesome/fonts
działa na mnie. Dzięki.W moim pliku style.css
źródło
Będziesz musiał skopiować pliki w ramach procesu kompilacji. Na przykład możesz użyć
npm postinstall
skryptu, aby skopiować pliki do odpowiedniego katalogu:W przypadku niektórych narzędzi do budowania istnieją już pakiety z niesamowitymi czcionkami. Na przykład pakiet internetowy zawiera pakiet font-awesome-webpack, który pozwala na proste
require('font-awesome-webpack')
.źródło
Korzystanie z pakietu webpack i scss:
Zainstaluj font-awesome za pomocą npm (korzystając z instrukcji konfiguracji na https://fontawesome.com/how-to-use )
Następnie, używając -WebPACK-plugin kopiowaniem , skopiuj Czcionki Webfonts Folder z node_modules do swojej dist folderu podczas procesu kompilacji WebPACK. ( https://github.com/webpack-contrib/copy-webpack-plugin )
W webpack.config.js skonfiguruj copy-webpack-plugin . UWAGA: Domyślnym folderem dist w pakiecie webpack 4 jest „dist”, dlatego kopiujemy folder webfonts z node_modules do folderu dist.
Na koniec, w pliku main.scss , powiedz fontawesome, gdzie folder webfonts został skopiowany i zaimportuj żądane pliki SCSS z node_modules .
i zastosuj poniższe
font-family
do żądanych regionów w dokumencie HTML, w których chcesz używać niesamowitych ikon.Przykład :
źródło
@import "../node_modules/[...]"
do@import "@/../node_modules/[...]"
resolve: {alias: {'node_modules': path.join(__dirname, 'node_modules')}}
a następnie@import "node_modules/[...]
Za pomocą expressjs upublicznij to:
Możesz to zobaczyć pod adresem:
yourdomain.com/stylesheets/fontawesome/css/all.min.css
źródło
devDependency
. Aby to rozwiązanie działało (w środowisku produkcyjnym), czy pakiet powinien być instalowany jako zwykła zależność?--save
a nie--save-dev
Możesz dodać go między
<head></head>
tagiem w następujący sposób:Albo jakakolwiek jest twoja ścieżka
node_modules
.Edytuj (26.06.2017) - Zastrzeżenie: SĄ LEPSZE ODPOWIEDZI. PROSZĘ NIE UŻYWAĆ TEJ METODY. W chwili udzielenia tej pierwotnej odpowiedzi dobre narzędzia nie były tak powszechne. Przy obecnych narzędziach do kompilacji, takich jak webpack lub browserify, prawdopodobnie nie ma sensu używać tej odpowiedzi. Mogę to usunąć, ale myślę, że ważne jest, aby podkreślić różne dostępne opcje i możliwe zalecenia, a czego nie.
źródło
@import '../node_modules/...'
polubić inne wskazane odpowiedzi.font-awesome
zmieniła się lokalizacja pliku css , wymagałoby to poprawienia lub konserwacji tak samo, jak inne odpowiedzi. różnica polega na tym, że ta odpowiedź nie wymaga transpilacji ani zadań. po prostu umieszcza import dokładnie tam, gdzie powinien; w<link>
tagu.Ponieważ obecnie uczę się node js, napotkałem również ten problem. Przede wszystkim zainstalowałem font-awesome za pomocą npm
potem ustawiłem folder statyczny na css i czcionki:
oraz w html:
i działa dobrze!
źródło
Jeśli używasz npm, możesz użyć Gulp.js, narzędzia do budowania pakietów Font Awesome z SCSS lub LESS. Ten przykład skompiluje kod z SCSS.
Zainstaluj Gulp.js v4 lokalnie i CLI V2 globalnie.
Zainstaluj wtyczkę o nazwie gulp-sass przy użyciu npm.
Utwórz plik main.scss w folderze publicznym i użyj tego kodu:
Utwórz plik gulpfile.js w katalogu aplikacji i skopiuj go.
Uruchom „gulp build” w wierszu poleceń i obserwuj magię.
źródło
Natknąłem się na to pytanie, mając podobny problem i pomyślałem, że podzielę się innym rozwiązaniem:
Jeśli tworzysz aplikację Javascript, do niesamowitych ikon czcionek można się również odwoływać bezpośrednio przez JavaScript:
Najpierw wykonaj czynności opisane w tym przewodniku :
Następnie w swoim javascript:
Po wykonaniu powyższych czynności możesz wstawić ikonę do węzła HTML za pomocą:
Możesz również uzyskać dostęp do ciągu HTML reprezentującego ikonę za pomocą:
źródło