From 2a6bbc56d2ecad904a6a0dea4208b8cc6e6a3f07 Mon Sep 17 00:00:00 2001 From: Devon Govett Date: Mon, 25 Nov 2024 09:01:47 -0800 Subject: [PATCH] Fix non file scheme in SASS Fixes #10019 --- packages/core/integration-tests/test/sass.js | 26 ++++++++++++++++++++ packages/transformers/sass/src/modern.js | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/packages/core/integration-tests/test/sass.js b/packages/core/integration-tests/test/sass.js index b3574588593..98199d8d5f2 100644 --- a/packages/core/integration-tests/test/sass.js +++ b/packages/core/integration-tests/test/sass.js @@ -399,4 +399,30 @@ describe('sass', function () { inputFS: overlayFS, }); }); + + it('should support npm scheme', async function () { + const dir = path.join(__dirname, 'sass-extensions'); + overlayFS.mkdirp(dir); + + await fsFixture(overlayFS, dir)` + index.js: + import './main.scss'; + + main.scss: + @use 'npm:test' as test; + + node_modules/test/package.json: + { "name": "test" } + + node_modules/test/_index.scss: + @use 'other'; + + node_modules/test/_other.scss: + .foo { color: red } + `; + + await bundle(path.join(dir, '/index.js'), { + inputFS: overlayFS, + }); + }); }); diff --git a/packages/transformers/sass/src/modern.js b/packages/transformers/sass/src/modern.js index 1f7bcdc81eb..4bf6732399d 100644 --- a/packages/transformers/sass/src/modern.js +++ b/packages/transformers/sass/src/modern.js @@ -98,7 +98,7 @@ function resolvePathImporter({ let containingPath = containingUrl ? fileURLToPath(containingUrl) : asset.filePath; - if (!containingUrl) { + if (!containingUrl && url.startsWith('file:')) { // If containingUrl is not provided, then url should be an absolute file:/// URL. let filePath = fileURLToPath(url); url = path.relative(path.dirname(containingPath), filePath);