• Stars
    star
    263
  • Rank 150,890 (Top 4 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 10 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

connect middleware extracted from node-sass

node-sass-middleware

Connect/Express middleware for node-sass.

Main CI Workflow npm version Gitter chat

Install

npm install node-sass-middleware

Usage

Recompile .scss or .sass files automatically for connect and express based http servers.

Connect example

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 <link rel="stylesheets" href="prefix/style.css"/>
  }),
  connect.static('/prefix', __dirname + '/public')
);

There is an example connect app here: https://github.com/andrew/node-sass-example

Heavily inspired by https://github.com/LearnBoost/stylus

Express example

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 <link rel="stylesheets" href="prefix/style.css"/>
}));
// 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

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 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 <prefix> 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.

Express example with custom log function

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.

Building and Testing

git clone [email protected]: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 for details.

More Repositories

1

sass

Sass makes CSS fun!
TypeScript
14,889
star
2

node-sass

๐ŸŒˆ Node.js bindings to libsass
C++
8,477
star
3

libsass

A C/C++ implementation of a Sass compiler
C++
4,312
star
4

dart-sass

The reference implementation of Sass, written in Dart.
Dart
3,784
star
5

sassc

libsass command line driver
C
778
star
6

sassc-rails

Integrate SassC-Ruby with Rails!
HTML
705
star
7

libsass-python

A straightforward binding of libsass for Python. Compile Sass/SCSS in Python with no Ruby stack at all!
Python
551
star
8

sassc-ruby

Use libsass with Ruby!
Ruby
365
star
9

sass-site

Sass Website
TypeScript
298
star
10

sass-spec

Official Sass Spec Suite
SCSS
198
star
11

ruby-sass

The original, now deprecated Ruby implementation of Sass
Ruby
182
star
12

embedded-host-node

A Node.js library that will communicate with Embedded Dart Sass using the Embedded Sass protocol
TypeScript
129
star
13

node-sass-binaries

Platform specific binaries for node-sass
127
star
14

libsass-net

A lightweight wrapper around libsass
C#
94
star
15

migrator

Tool for migrating stylesheets to new Sass versions
Dart
83
star
16

ruby-libsass

Ruby bindings for libsass
Ruby
81
star
17

dart-sass-embedded

A wrapper for Dart Sass that implements the compiler side of the Embedded Sass protocol
Dart
67
star
18

linter

An experimental Sass linter written using the Dart Sass AST
Dart
39
star
19

embedded-protocol

A protocol for communicating between a Sass implementation and a host language
33
star
20

homebrew-sass

A Homebrew tap for Sass
Ruby
33
star
21

perl-libsass

Perl bindings for libsass (CSS::Sass)
Perl
27
star
22

libsass.com

CSS
6
star
23

sass-registry

Extension registry for Sass
Ruby
6
star
24

sass-site-built

The built HTML of the Sass website, used to see output diffs in code reviews
HTML
5
star
25

clone-linked-repo

A utility action that emits information about one PR linked from another's message
Shell
2
star