Summary
Angular CLI supports all major CSS preprocessors, including sass/scss. Simply generate the project like this and almost everything will work:
ng new sassy-project --style=sass
However, if Karma is also involved, during tests the global scss files are not included. It seems an additional prepocessor is required for karma to process these scss files.
It was very confusing for me, but note there are two similar preprocessors out there. I do not recommend 'karma-sass-preprocessor'
, it is still available via npm, but the project seems to be deprecated.
Use 'karma-scss-preprocessor'
instead (karma-scss-preprocessor)
Installation
npm install karma-scss-preprocessor node-sass --save-dev
If you installed karma-sass-prepocessor before, first uninstall it by removing from package.json
Configuration
karma.conf.js
module.exports = function (config) {
config.set({
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'),
require('@angular/cli/plugins/karma'),
require('karma-scss-preprocessor')
],
files: [
{ pattern: './src/test.ts', watched: false },
{ pattern: './src/dummy.scss', watched: true, included: true, served: true },
{ pattern: './src/styles.scss', watched: true, included: true, served: true }
],
preprocessors: {
'./src/test.ts': ['@angular/cli'],
'./src/dummy.scss': ['scss'],
'./src/styles.scss': ['scss']
},
});
};