From 9f58df242ce90dce6488006081d51d47a8416c97 Mon Sep 17 00:00:00 2001 From: James Talmage Date: Fri, 4 Jan 2019 22:10:59 -0500 Subject: [PATCH] Fix: relative paths in @import statements don't work. Previous attempts to allow relative paths in @import statements added to `sassOptions.includePaths`. That was deemed unacceptable as it would capture relative files that weren't explicitly imported with relative paths. The solution is to pass the filename in `sassOptions`. It's fine to pass the javascript file path: we are already providing the `data` option with the content to parse, so sass won't actually try to read the file. It is only used for resolving explicit relative imports. --- index.js | 4 +++- test.js | 3 --- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index 4a4a843..ce3f094 100644 --- a/index.js +++ b/index.js @@ -14,9 +14,11 @@ module.exports = (css, settings) => { const optionData = settings.sassOptions && settings.sassOptions.data || ""; const data = optionData + "\n" + cssWithPlaceholders; + const file = settings.babel && settings.babel.filename; + const preprocessed = sass.renderSync( Object.assign( - {}, + {file}, settings.sassOptions, { data } )).css.toString() diff --git a/test.js b/test.js index fc9d3dd..9a618d9 100644 --- a/test.js +++ b/test.js @@ -122,9 +122,6 @@ describe('styled-jsx-plugin-sass', () => { assert.equal( plugin(file.toString(), { - sassOptions: { - includePaths: [path.join(__dirname, 'fixtures')] - }, babel: { filename } }).trim(), cleanup(`