diff --git a/package-lock.json b/package-lock.json index 94b9f3a..b737f35 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@epegzz/sass-vars-loader", - "version": "3.3.1", + "version": "3.4.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index e49547e..79a5d11 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@epegzz/sass-vars-loader", - "version": "3.3.2", + "version": "3.4.0", "author": "Daniel Schäfer ", "description": "A SASS vars loader for Webpack. Load global SASS vars from JS/JSON files or from Webpack config.", "keywords": [ diff --git a/src/__snapshots__/sassVarsLoader.test.js.snap b/src/__snapshots__/sassVarsLoader.test.js.snap index c545e71..8a1a4e2 100644 --- a/src/__snapshots__/sassVarsLoader.test.js.snap +++ b/src/__snapshots__/sassVarsLoader.test.js.snap @@ -1,13 +1,15 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`With sass syntax Returns expected Sass contents 1`] = ` -"$value1FromWebpack: foo +" +$value1FromWebpack: foo $nested: (works: (veryWell: true, withoutProblems: indeed)) sassFileContents" `; exports[`With vars from JSON, JS and config Returns expected Sass contents 1`] = ` -"$value1FromJson: foo; +" +$value1FromJson: foo; $loadingOrderTest1: fromJSON; $loadingOrderTest2: fromJS; $value1FromJs: foo; @@ -16,7 +18,8 @@ sassFileContents" `; exports[`With vars from files Returns expected Sass contents 1`] = ` -"$value1FromJson: foo; +" +$value1FromJson: foo; $loadingOrderTest1: fromJSON; $loadingOrderTest2: fromJS; $value2FromJson: foo; @@ -26,12 +29,14 @@ sassFileContents" `; exports[`With vars from webpack config Returns expected Sass contents 1`] = ` -"$value1FromWebpack: foo; +" +$value1FromWebpack: foo; $nested: (works: (veryWell: true, withoutProblems: indeed)); sassFileContents" `; exports[`Without options Returns expected Sass contents 1`] = ` " + sassFileContents" `; diff --git a/src/sassVarsLoader.js b/src/sassVarsLoader.js index 6677f88..ab25ed1 100644 --- a/src/sassVarsLoader.js +++ b/src/sassVarsLoader.js @@ -1,6 +1,7 @@ import loaderUtils from 'loader-utils' -import getVarsFromJSONFiles from './utils/readVarsFromJSONFiles' -import getVarsFromJavascriptFiles from './utils/readVarsFromJavascriptFiles' +import readVarsFromJSONFiles from './utils/readVarsFromJSONFiles' +import readVarsFromJavascriptFiles from './utils/readVarsFromJavascriptFiles' +import readSassFiles from './utils/readSassFiles' import watchFilesForChanges from './utils/watchFilesForChanges' import convertJsToSass from './utils/convertJsToSass' @@ -14,12 +15,12 @@ export default function(content) { watchFilesForChanges(this, files) const vars = { - ...getVarsFromJSONFiles(files), - ...getVarsFromJavascriptFiles(files), + ...readVarsFromJSONFiles(files), + ...readVarsFromJavascriptFiles(files), ...options.vars, } const sassVarsString = convertJsToSass(vars, syntax) - return `${sassVarsString}\n${content}` + return [readSassFiles(files), sassVarsString, content].join('\n') } diff --git a/src/utils/readSassFiles.js b/src/utils/readSassFiles.js new file mode 100644 index 0000000..cc6429b --- /dev/null +++ b/src/utils/readSassFiles.js @@ -0,0 +1,10 @@ +import fs from 'fs' + +export default function(files) { + return files.reduce((vars, filepath) => { + if (filepath.match(/\.s[ac]ss/)) { + return [vars, fs.readFileSync(filepath, 'utf8')].join('\n') + } + return vars + }, '') +}