Przeczytałem dokumentację , która mówi, że jeśli chcę użyć, scss
muszę uruchomić następujące polecenie:
ng set defaults.styleExt scss
Ale kiedy to robię i tworzę ten plik, nadal pojawia się ten błąd w mojej konsoli:
styles.bundle.js:33Uncaught Error: Module build failed: Error: ENOENT:
no such file or directory, open
'/Users/Egen/Code/angular/src/styles.css'(…)
git diff
zobaczysz, co się zmieniło.ng new whatever --style=scss
opisane w dokumentacji . Nie postępuj zgodnie z instrukcjami konfigurowania istniejącego projektu, jeśli to nie jest to, co robisz!Odpowiedzi:
W przypadku Angular 6 sprawdź oficjalną dokumentację
Uwaga: w przypadku
@angular/cli
wersji starszych niż6.0.0-beta.6
użycieng set
zamiastng config
.W przypadku istniejących projektów
W istniejącym projekcie angular-cli, który został skonfigurowany z domyślnymi
css
stylami, będziesz musiał zrobić kilka rzeczy:scss
jeśli pojawi się błąd:
Value cannot be found.
użyj polecenia:(* źródło: opcje Angular CLI SASS )
Zmień nazwę istniejących
.css
plików na.scss
(np. Styles.css i app / app.component.css)Wskaż CLI, aby znaleźć style.scss
Do przyszłych projektów
Jak wspomniał @Serginho, możesz ustawić rozszerzenie stylu podczas uruchamiania
ng new
poleceniang new your-project-name --style=scss
Jeśli chcesz ustawić wartość domyślną dla wszystkich tworzonych projektów w przyszłości, uruchom następujące polecenie:
ng config --global defaults.styleExt=scss
źródło
css
nascss
in.angular-cli.json
spowoduje automatyczne utworzenie plików scss dla każdego nowego komponentu wygenerowanego w przyszłości.ng config schematics.@schematics/angular:component.styleext scss
jak powiedział @ hamilton.limaPocząwszy od ng6 można to osiągnąć za pomocą następującego kodu dodanego
angular.json
na poziomie głównym:Zmień ręcznie
.angular.json
:"schematics": { "@schematics/angular:component": { "styleext": "scss" } }
źródło
schematics
na poziomie głównym, ale zagnieżdżono w moim projekcie wangular.json
. Czy powinienem to zignorować i zamiast tego dodać to na poziomie głównym?schematics
jest teraz zagnieżdżony.Otwórz plik angular.json
1. zmiana z
"schematics": {}
do
"schematics": { "@schematics/angular:component": { "styleext": "scss" } }
"src/styles.css"
do
"src/styles.scss"
następnie sprawdź i zmień nazwy wszystkich
.css
plików i zaktualizuj pliki component.ts styleUrls z.css to .scss
źródło
ng config schematics.@schematics/angular:component.styleext scss
jak określono w oficjalnych dokumentach: github.com/angular/angular-cli/wiki/stories-css-preprocessorsDla Angular 6,
uwaga: @ schemics / angular to domyślny schemat dla Angular CLI
źródło
Integracja preprocesora CSS dla Angular CLI: 6.0.3
Podczas generowania nowego projektu możesz również określić, które rozszerzenie chcesz dla plików stylów:
ng new sassy-project --style=sass
Lub ustaw domyślny styl w istniejącym projekcie:
Dokumentacja Angular CLI dla wszystkich głównych preprocesorów CSS
źródło
Invalid JSON character: "s" at 0:0.
ng config
(jak wyżej) jest najlepszą metodą, ale nadal trzeba zmieniać nazwy*.css
plików do*.scss
i zastąpić odniesienia wangular.json
celustyle.css
zstyle.scss
I zaktualizować wszystkie składowe referencje plików wstyleUrls
nieruchomości z nowymi nazwami. ... to działa świetnie!W przypadku istniejących projektów :
W
angular.json
plikuW
build
części, wtest
części, należy wymienić:"styles": ["src/styles.css"],
przez"styles": ["src/styles.scss"],
Zastąpić:
"schematics": {},
przez"schematics": { "@schematics/angular:component": { "style": "scss" } },
W projekcie zmień nazwy
.css
plików na.scss
W przypadku nowego projektu to polecenie wykonuje całą pracę:
ng n project-name --style=scss
Do konfiguracji globalnej
Wydaje się, że nowe wersje nie mają polecenia globalnego
źródło
Użyj polecenia:
źródło
W najnowszej wersji Angular (v9) poniższy kod musi zostać dodany
angular.json
"schematics": { "@schematics/angular:component": { "style": "scss" } }
Można dodać za pomocą następującego polecenia:
źródło
"styleext"
i"style"
w tej odpowiedziW ng6 musisz użyć tego polecenia, według podobnego postu :
ng config schematics.@schematics/angular:component '{ styleext: "scss"}'
źródło
Dla użytkowników rozszerzeń Nrwl, którzy natkną się na ten wątek: wszystkie polecenia są przechwytywane przez Nx (np.
ng generate component myCompent
), A następnie przekazywane do AngularCLI.Polecenie, aby SCSS działało w obszarze roboczym Nx:
ng config schematics.@nrwl/schematics:component.styleext scss
źródło
Można zastosować brutalną zmianę siły. To zadziała, aby się zmienić, ale to dłuższy proces.
Przejdź do folderu aplikacji src / app
Otwórz ten plik: app.component.ts
Zmień ten kod
styleUrls: ['./app.component.css']
nastyleUrls: ['./app.component.scss']
Zapisz i zamknij.
W tym samym folderze src / app
Zmień nazwę rozszerzenia pliku app.component.css na (app.component.scss)
Postępuj zgodnie z tą zmianą dla wszystkich pozostałych składników. (np. dom, informacje, kontakt itp.)
Angular.json plik konfiguracyjny znajduje się obok. Znajduje się w katalogu głównym projektu.
Wyszukaj i zamień css zmień go na (scss) .
Zapisz i zamknij.
Na koniec uruchom ponownie
ng serve -o
.Jeśli kompilator narzeka na ciebie, powtórz kroki.
Upewnij się, że postępujesz zgodnie z instrukcjami w app / src .
źródło