@density/node-sass-json-importer
v5.0.0
Published
Allows importing json in sass files parsed by node-sass.
Downloads
9
Readme
node-sass-json-importer
JSON importer for node-sass. Allows @import
ing .json
files in Sass files parsed by node-sass
.
NOTE: This is a fork of Updater/node-sass-json-importer. We've added a transformation of camelcased keys to kabob-cased keys automatically. For example:
{
"fooBar": "baz"
}
is converted to:
$foo-bar: baz;
Usage
node-sass
This module hooks into node-sass's importer api.
var sass = require('node-sass');
var jsonImporter = require('node-sass-json-importer');
// Example 1
sass.render({
file: scss_filename,
importer: jsonImporter,
[, options..]
}, function(err, result) { /*...*/ });
// Example 2
var result = sass.renderSync({
data: scss_content
importer: [jsonImporter, someOtherImporter]
[, options..]
});
node-sass command-line interface
To run this using node-sass CLI, point --importer
to your installed json importer, for example:
./node_modules/.bin/node-sass --importer node_modules/node-sass-json-importer/dist/node-sass-json-importer.js --recursive ./src --output ./dist
Webpack / sass-loader
Webpack v1
import jsonImporter from 'node-sass-json-importer';
// Webpack config
export default {
module: {
loaders: [{
test: /\.scss$/,
loaders: ["style", "css", "sass"]
}],
},
// Apply the JSON importer via sass-loader's options.
sassLoader: {
importer: jsonImporter
}
};
Webpack v2
import jsonImporter from 'node-sass-json-importer';
// Webpack config
export default {
module: {
rules: [
test: /\.scss$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
importLoaders: 1
},
},
{
loader: 'sass-loader',
// Apply the JSON importer via sass-loader's options.
options: {
importer: jsonImporter,
},
},
],
],
},
};
Importing strings
Since JSON doesn't map directly to SASS's data types, a common source of confusion is how to handle strings. While SASS allows strings to be both quoted and unqouted, strings containing spaces, commas and/or other special characters have to be wrapped in quotes. In terms of JSON, this means the string has to be double quoted:
Incorrect
{
"description": "A sentence with spaces."
}
Correct
{
"description": "'A sentence with spaces.'"
}
See discussion here for more:
https://github.com/Updater/node-sass-json-importer/pull/5
Thanks to
This module is based on the sass-json-vars gem, which unfortunately isn't compatible with node-sass
.