SharpScss
SharpScss copied to clipboard
A portable cross-platform pinvoke .NET wrapper around libsass to convert SCSS to CSS
SharpScss

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 inScssOptions.TryImport
- Supports for
.NET Standard 2.0+
- Supports
Windows x86
,Windows x64
,linux-x64
andosx-x64
For older .NET2.0, .NET3.5, .NET4.x+ and netstandard1.3
, you need to download the 1.4.0
version.
Download
Usage
SharpScss API is simply composed of a main Scss
class:
-
Scss.ConvertToCss
: to convert aSCSS
string to aCSS
var result = Scss.ConvertToCss("div {color: #FFF;}")
Console.WriteLine(result.Css);
-
Scss.ConvertFileToCss
: to convert aSCSS
file to aCSS
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