Giter VIP home page Giter VIP logo

compass-loader's Introduction

DO NOT USE THIS

THIS IS NOT MAINTAINED

If you do not need compass (various mixins and sprite generation, etc) then please see the sass-loader https://github.com/jtangelder/sass-loader

compass loader for webpack

####Warning This is all pretty beta stuff, I don't recommend using this in production just yet. Honestly you're better off using sass-loader and https://github.com/Igosuki/compass-mixins then add node_modules/compass-mixins/lib as an include path.

####You've been warned

Usage

Documentation: Using loaders

var css = require("!raw!compass!./file.scss");
// => returns compiled css code from file.scss, resolves imports
var css = require("!css!compass!./file.scss");
// => returns compiled css code from file.scss, resolves imports and url(...)s

Use in tandem with the style-loader to add the css rules to your document:

require("!style!css!compass!./file.scss");

webpack config

It's recommended to adjust your webpack.config so style!css!compass! is applied automatically on all files ending on .scss:

module.exports = {
  module: {
    loaders: [
      {
        test: /\.scss$/,
        // Query parameters are passed to node-sass
        loader: "style!css!compass?outputStyle=expanded&" +
          "includePaths[]=" +
            (path.resolve(__dirname, "./bower_components")) + "&" +
          "includePaths[]=" +
            (path.resolve(__dirname, "./node_modules"))
      }
    ]
  }
};

If you utilize sprites or anything that utilizes your config.rb images path then you'll need to pass in both imagePath and spriteDist paths.

var imagePath = path.resolve(__dirname, '../images'),
    spriteOutput = imagePath;
require("!style!raw!compass!./file.scss?imagePath=" + imagePath + "&spriteOutput=" + spriteOutput);

Comma separate imports are not supported.

@import "language", "another/module";

should be written as

@import "language";
@import "another/module";

Sorry.

Also this depends on the latest node-sass 2.0 beta to return all included files so we can tell webpack about dependencies. This may or may not work well, and also won't work when node-sass generates errors as it will not complete parsing the CSS and will not return all included files. To get this functionality sass-graph would have to be modified

Then you only need to write: require("./file.scss"). See node-sass for the available options.

Install

npm install compass-loader

Caveats

Currently the sass-loader does not follow all of the webpack loader guidelines. The general problem is that the entry scss-file is passed to node-sass which does pretty much the rest. Thus @import statements inside your scss-files cannot be resolved by webpack's resolver. However, there is an issue for that missing feature in libsass.

License

MIT (http://www.opensource.org/licenses/mit-license.php)

compass-loader's People

Contributors

akiran avatar avanderhoorn avatar browniefed avatar deoxxa avatar jhnns avatar jtangelder avatar maspwr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

compass-loader's Issues

Sprite generation error

I'm on windows so maybe this is part of the issue, but when I try your library with a simple file:

@import "compass";

I get an error

{ [Error: ENOENT, open 'c:\images\sprite-file($map']
  errno: 34,
  code: 'ENOENT',
  path: 'c:\\images\\sprite-file($map' }

I'm not sure why its trying to look in c:\images, I instructed it to use a different folder for imagepath.

Using compass-mixins is working fine, even image url.

Any idea?

String interpolation cannot be used in image-height/width function

I am trying to use a variable in my mixin with image-height/width, but it seems to not be interpolating the string. The function also fails with a quoted string. It is fine with un-quoted path though.

height: image-height('common/sprite/' + $name + '.png');
{ [Error: ENOENT, open 'c:\Users\Dane\code\app\img\'co
mmon\sprite\' + $name + '.png'']
  errno: 34,
  code: 'ENOENT',
  path: 'c:\\Users\\Dane\\code\\app\\img\\\'common\
\sprite\\\' + $name + \'.png\'' }

Release NPM namespace

If this project isn't maintained, and never have had a stable release, could you please release the npm namespace "compass-loader" so that someone else could use it?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.