diff --git a/index.js b/index.js index 9dd2cc39..889cdaa7 100755 --- a/index.js +++ b/index.js @@ -32,7 +32,7 @@ function AtImport(options) { return { postcssPlugin: "postcss-import", - Once(styles, { result, atRule }) { + Once(styles, { result, atRule, postcss }) { const state = { importedFiles: {}, hashFiles: {}, @@ -265,28 +265,30 @@ function AtImport(options) { if (state.hashFiles[content] && state.hashFiles[content][media]) return - return processContent(result, content, filename, options).then( - importedResult => { - const styles = importedResult.root - result.messages = result.messages.concat( - importedResult.messages - ) - - if (options.skipDuplicates) { - const hasImport = styles.some(child => { - return child.type === "atrule" && child.name === "import" - }) - if (!hasImport) { - // save hash files to skip them next time - if (!state.hashFiles[content]) state.hashFiles[content] = {} - state.hashFiles[content][media] = true - } + return processContent( + result, + content, + filename, + options, + postcss + ).then(importedResult => { + const styles = importedResult.root + result.messages = result.messages.concat(importedResult.messages) + + if (options.skipDuplicates) { + const hasImport = styles.some(child => { + return child.type === "atrule" && child.name === "import" + }) + if (!hasImport) { + // save hash files to skip them next time + if (!state.hashFiles[content]) state.hashFiles[content] = {} + state.hashFiles[content][media] = true } - - // recursion: import @import from imported file - return parseStyles(result, styles, options, state, media) } - ) + + // recursion: import @import from imported file + return parseStyles(result, styles, options, state, media) + }) } ) } diff --git a/lib/process-content.js b/lib/process-content.js index 531e7745..beaa3f03 100644 --- a/lib/process-content.js +++ b/lib/process-content.js @@ -3,13 +3,16 @@ // builtin tooling const path = require("path") -// external tooling -const postcss = require("postcss") - // placeholder tooling let sugarss -module.exports = function processContent(result, content, filename, options) { +module.exports = function processContent( + result, + content, + filename, + options, + postcss +) { const { plugins } = options const ext = path.extname(filename) @@ -22,7 +25,8 @@ module.exports = function processContent(result, content, filename, options) { sugarss = require("sugarss") } catch {} // Ignore } - if (sugarss) return runPostcss(content, filename, plugins, [sugarss]) + if (sugarss) + return runPostcss(postcss, content, filename, plugins, [sugarss]) } // Syntax support: @@ -35,10 +39,10 @@ module.exports = function processContent(result, content, filename, options) { // Try the default as a last resort: parserList.push(null) - return runPostcss(content, filename, plugins, parserList) + return runPostcss(postcss, content, filename, plugins, parserList) } -function runPostcss(content, filename, plugins, parsers, index) { +function runPostcss(postcss, content, filename, plugins, parsers, index) { if (!index) index = 0 return postcss(plugins) .process(content, { @@ -50,6 +54,6 @@ function runPostcss(content, filename, plugins, parsers, index) { index++ // If there are no parsers left, throw it if (index === parsers.length) throw err - return runPostcss(content, filename, plugins, parsers, index) + return runPostcss(postcss, content, filename, plugins, parsers, index) }) }