postcss-import
Version:
PostCSS plugin to import CSS files
63 lines (51 loc) • 1.23 kB
JavaScript
// builtin tooling
const path = require("path")
// placeholder tooling
let sugarss
module.exports = function processContent(
result,
content,
filename,
options,
postcss,
) {
const { plugins } = options
const ext = path.extname(filename)
const parserList = []
// SugarSS support:
if (ext === ".sss") {
if (!sugarss) {
/* c8 ignore next 3 */
try {
sugarss = require("sugarss")
} catch {} // Ignore
}
if (sugarss)
return runPostcss(postcss, content, filename, plugins, [sugarss])
}
// Syntax support:
if (result.opts.syntax?.parse) {
parserList.push(result.opts.syntax.parse)
}
// Parser support:
if (result.opts.parser) parserList.push(result.opts.parser)
// Try the default as a last resort:
parserList.push(null)
return runPostcss(postcss, content, filename, plugins, parserList)
}
async function runPostcss(postcss, content, filename, plugins, parsers) {
let lastError
const processor = postcss(plugins)
for (const parser of parsers) {
try {
return await processor.process(content, {
from: filename,
parser,
})
} catch (err) {
lastError = err
}
}
throw lastError
}