Giter VIP home page Giter VIP logo

sharpscss's Introduction

SharpScss Build Status NuGet

SharpScss is a P/Invoke .NET wrapper around libsass to convert SCSS to CSS.

Based on the version of libsass 3.6.4

Features

  • Pure P/Invoke .NET wrapper, no C++/CLI involved
  • Supports converting from a string or from a file
  • Supports include paths
  • Supports for source maps
  • Supports for libsass user custom importer callback in ScssOptions.TryImport
  • Supports for .NET Standard 2.0+
  • Supports Windows x86, Windows x64, linux-x64 and osx-x64

For older .NET2.0, .NET3.5, .NET4.x+ and netstandard1.3, you need to download the 1.4.0 version.

Download

SharpScss is available on NuGet

Usage

SharpScss API is simply composed of a main Scss class:

  • Scss.ConvertToCss: to convert a SCSS string to a CSS
var result = Scss.ConvertToCss("div {color: #FFF;}")
Console.WriteLine(result.Css);
  • Scss.ConvertFileToCss: to convert a SCSS file to a CSS
var result = Scss.ConvertFileToCss("test.scss")
Console.WriteLine(result.Css);

Using the ScssOptions you can specify additional parameters:

var result = Scss.ConvertToCss(@"div {color: #FFF;}", new ScssOptions()
{
	InputFile = "Test.scss",
	OutputFile = "Test.css", // Note: It will not generate the file, 
                             // only used for exception reporting
                             // includes and source maps
	GenerateSourceMap = true
});
Console.WriteLine(result.Css);
Console.WriteLine(result.SourceMap);

You can use also custom dynamic import through the delegate ScssOptions.TryImport. Note that in that cases ScssOptions.IncludePaths is not used and it is the responsability of the TryImport to perform the resolution (e.g on a virtual file system):

var result = Scss.ConvertToCss(@"@import ""foo"";", new ScssOptions()
{
	InputFile = "test.scss",
	TryImport = (ref string file, string path, out string scss, out string map) =>
	{
        // Add resolve the file
        // file = resolvedFilePath; // Can change the file resolved
		scss = ...; // TODO: handle the loading of scss for the specified file
		map = null;
		return true;
	}
});

Runtime

SharpScss depends on the native runtime libsass. This runtime is compiled for the following platform/runtime:

  • win-x86
  • win-x64
  • linux-x64
  • osx-x64

On .NET Core (netcoreapp), the runtime is selected based on the Runtime Identifier - RID of your project.

  • You can add to your csproj the specific targeting runtimes your netcoreapp with <RuntimeIdentifiers>win-x86;linux-x64</RuntimeIdentifiers> or <RuntimeIdentifier> if you have only one runtime to target (See Additions to the csproj format for .NET Core)

Build

Currently, the compiled version of libsass shipped with SharpScss is a custom build from the fork xoofx/libsass

This fork is mainly allowing to compile libsass without the MSVC C/C++ Runtime on Windows.

License

This software is released under the BSD-Clause 2 license.

Author

Alexandre Mutel aka xoofx

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.