# node-sass-middleware
**Repository Path**: mirrors_sass/node-sass-middleware
## Basic Information
- **Project Name**: node-sass-middleware
- **Description**: connect middleware extracted from node-sass
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-08-19
- **Last Updated**: 2026-01-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# node-sass-middleware
> [!WARNING]
**[LibSass has reached its end of life](https://sass-lang.com/blog/libsass-is-end-of-life).**
It will no longer receive updates of any kind. Users should migrate to
[Dart Sass](https://sass-lang.com/dart-sass) at their earliest convenience.
Connect/Express middleware for [node-sass](https://github.com/sass/node-sass).
[](https://github.com/sass/node-sass-middleware/actions/workflows/ci.yml)
[](http://badge.fury.io/js/node-sass-middleware)
[](https://gitter.im/sass/node-sass)
## Install
```bash
npm install node-sass-middleware
```
## Usage
Recompile `.scss` or `.sass` files automatically for connect and express based http servers.
### Connect example
```javascript
const connect = require('connect')
const sassMiddleware = require('node-sass-middleware')
const server = connect.createServer(
sassMiddleware({
/* Options */
src: __dirname
, dest: __dirname + '/public'
, debug: true
, outputStyle: 'compressed'
, prefix: '/prefix' // Where prefix is at
}),
connect.static('/prefix', __dirname + '/public')
);
```
There is an example connect app here:
Heavily inspired by
### Express example
```javascript
const express = require('express');
const sassMiddleware = require('node-sass-middleware');
const path = require('path');
const app = express();
app.use(sassMiddleware({
/* Options */
src: __dirname,
dest: path.join(__dirname, 'public'),
debug: true,
outputStyle: 'compressed',
prefix: '/prefix' // Where prefix is at
}));
// Note: you must place sass-middleware *before* `express.static` or else it will
// not work.
app.use('/public', express.static(path.join(__dirname, 'public')));
```
### Connect with other middleware example
```javascript
const connect = require('connect');
const sassMiddleware = require('node-sass-middleware');
const postcssMiddleware = require('postcss-middleware');
const autoprefixer = require('autoprefixer');
const path = require('path');
const http = require('http');
const app = connect();
const destPath = __dirname + '/public';
app.use(sassMiddleware({
/* Options */
src: __dirname
, response: false
, dest: destPath
, outputStyle: 'extended'
}));
app.use(postcssMiddleware({
plugins: [
/* Plugins */
autoprefixer({
/* Options */
})
],
src: function(req) {
return path.join(destPath, req.url);
}
}));
http.createServer(app).listen(3000);
```
### Options
* `src` - (String) Source directory used to find `.scss` or `.sass` files.
#### Optional configurations
* `beepOnError` - Enable beep on error, false by default.
* `debug` - `[true | false]`, false by default. Output debugging information.
* `dest` - (String) Destination directory used to output `.css` files (when undefined defaults to `src`).
* `error` - A function to be called when something goes wrong.
* `force` - `[true | false]`, false by default. Always re-compile.
* `indentedSyntax` - `[true | false]`, false by default. If true compiles files with the `.sass` extension instead of `.scss` in the `src` directory.
* `log` - `function(severity, key, val, message)`, used to log data instead of the default `console.error`. "severity" matches [Winston](https://www.npmjs.com/package/winston) severity levels.
* `maxAge` - MaxAge to be passed in Cache-Control header.
* `prefix` - (String) It will tell the sass middleware that any request file will always be prefixed with `` and this prefix should be ignored.
* `response` - `[true | false]`, true by default. To write output directly to response instead of to a file.
* `root` - (String) A base path for both source and destination directories.
For full list of options from original node-sass project go [here](https://github.com/sass/node-sass).
### Express example with custom log function
```javascript
const express = require('express');
const sassMiddleware = require('node-sass-middleware');
const path = require('path');
const winston = require('winston');
const app = express();
winston.level = 'debug';
app.use(sassMiddleware({
/* Options */
src: __dirname,
dest: path.join(__dirname, 'public'),
debug: true,
log: function (severity, key, value) { winston.log(severity, 'node-sass-middleware %s : %s', key, value); }
}));
// Note: you must place sass-middleware *before* `express.static` or else it will
// not work.
app.use(express.static(path.join(__dirname, 'public')));
```
## Contributors
We <3 our contributors! A special thanks to all those who have clocked in some dev time on this project, we really appreciate your hard work. You can find [a full list of those people here](https://github.com/sass/node-sass-middleware/graphs/contributors).
### Building and Testing
```sh
git clone git@github.com:sass/node-sass-middleware
cd node-sass-middleware
npm install
npm test
```
### Note on Patches/Pull Requests
* Fork the project.
* Make your feature addition or bug fix.
* Add documentation if necessary.
* Add tests for it. This is important so I don't break it in a future version unintentionally.
* Send a pull request. Bonus points for topic branches.
## Copyright
Copyright (c) 2013+ Andrew Nesbitt. See [LICENSE](https://github.com/sass/node-sass-middleware/blob/master/LICENSE) for details.