You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.5 KiB
88 lines
2.5 KiB
"use strict"; |
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
exports.processors = void 0; |
|
const merge = require('merge-source-map'); |
|
// .scss/.sass processor |
|
const scss = { |
|
render(source, map, options) { |
|
const nodeSass = require('sass'); |
|
const finalOptions = Object.assign({}, options, { |
|
data: source, |
|
file: options.filename, |
|
outFile: options.filename, |
|
sourceMap: !!map |
|
}); |
|
try { |
|
const result = nodeSass.renderSync(finalOptions); |
|
if (map) { |
|
return { |
|
code: result.css.toString(), |
|
map: merge(map, JSON.parse(result.map.toString())), |
|
errors: [] |
|
}; |
|
} |
|
return { code: result.css.toString(), errors: [] }; |
|
} |
|
catch (e) { |
|
return { code: '', errors: [e] }; |
|
} |
|
} |
|
}; |
|
const sass = { |
|
render(source, map, options) { |
|
return scss.render(source, map, Object.assign({}, options, { indentedSyntax: true })); |
|
} |
|
}; |
|
// .less |
|
const less = { |
|
render(source, map, options) { |
|
const nodeLess = require('less'); |
|
let result; |
|
let error = null; |
|
nodeLess.render(source, Object.assign({}, options, { syncImport: true }), (err, output) => { |
|
error = err; |
|
result = output; |
|
}); |
|
if (error) |
|
return { code: '', errors: [error] }; |
|
if (map) { |
|
return { |
|
code: result.css.toString(), |
|
map: merge(map, result.map), |
|
errors: [] |
|
}; |
|
} |
|
return { code: result.css.toString(), errors: [] }; |
|
} |
|
}; |
|
// .styl |
|
const styl = { |
|
render(source, map, options) { |
|
const nodeStylus = require('stylus'); |
|
try { |
|
const ref = nodeStylus(source); |
|
Object.keys(options).forEach(key => ref.set(key, options[key])); |
|
if (map) |
|
ref.set('sourcemap', { inline: false, comment: false }); |
|
const result = ref.render(); |
|
if (map) { |
|
return { |
|
code: result, |
|
map: merge(map, ref.sourcemap), |
|
errors: [] |
|
}; |
|
} |
|
return { code: result, errors: [] }; |
|
} |
|
catch (e) { |
|
return { code: '', errors: [e] }; |
|
} |
|
} |
|
}; |
|
exports.processors = { |
|
less, |
|
sass, |
|
scss, |
|
styl, |
|
stylus: styl |
|
};
|
|
|