What is sass-loader?
The sass-loader npm package is a loader for webpack that allows you to preprocess .scss or .sass files to standard CSS. It uses the Sass compiler to convert Sass code into CSS, and then webpack can bundle the resulting CSS into your final build.
What are sass-loader's main functionalities?
Compiling Sass/SCSS to CSS
This webpack configuration snippet demonstrates how to set up sass-loader in conjunction with css-loader and style-loader to process .scss files.
module.exports = {
module: {
rules: [
{
test: /\.scss$/,
use: [
'style-loader',
'css-loader',
'sass-loader'
]
}
]
}
};
Source Maps
This code enables source maps for easier debugging of Sass files. It configures sass-loader to generate source maps so that the browser dev tools can display the original Sass code instead of the compiled CSS.
module.exports = {
module: {
rules: [
{
test: /\.scss$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: { sourceMap: true }
},
{
loader: 'sass-loader',
options: { sourceMap: true }
}
]
}
]
}
};
Custom Functions
This example shows how to add custom functions to the Sass compilation process. The custom 'pow' function can be used within Sass files to compute powers.
const sass = require('sass');
module.exports = {
module: {
rules: [
{
test: /\.scss$/,
use: [
'style-loader',
'css-loader',
{
loader: 'sass-loader',
options: {
sassOptions: {
functions: {
'pow($base, $exponent)': function(base, exponent) {
return new sass.types.Number(Math.pow(base.getValue(), exponent.getValue()));
}
}
}
}
}
]
}
]
}
};
Other packages similar to sass-loader
node-sass
node-sass is a library that provides binding for Node.js to the Sass compiler. It allows you to natively compile .scss files to css at incredible speed. However, node-sass is deprecated in favor of Dart Sass.
postcss-loader
postcss-loader is a tool that uses PostCSS to process CSS with JavaScript plugins. It can be used for tasks such as autoprefixing, linting, and more. While sass-loader focuses on compiling Sass, postcss-loader is more about post-processing CSS.
less-loader
less-loader is similar to sass-loader but for Less, which is another preprocessor language that extends the capabilities of CSS. It's a loader for webpack that compiles Less to CSS.
stylus-loader
stylus-loader enables webpack to compile Stylus files to CSS. Stylus is another CSS preprocessor scripting language, offering similar features to Sass/SCSS.
sass loader for webpack
Usage
var css = require("!sass!./file.scss");
Use in tandem with the style-loader
to add the css rules to your document:
require("!style!sass!./file.scss");
You can even go next level, by using it with the css-loader
to import linked files.
webpack config
module.exports = {
module: {
loaders: [
{
test: /\.scss$/,
loader: "style-loader!sass-loader?outputStyle=expanded"
}
]
}
};
Then you only need to write: require("./file.scss")
. See node-sass
for the available options.
Install
npm install sass-loader
License
MIT (http://www.opensource.org/licenses/mit-license.php)