From dada514dbc3c40e7e5a43ab80293ba75d030081b Mon Sep 17 00:00:00 2001 From: evilebottnawi Date: Thu, 8 Aug 2019 19:30:16 +0300 Subject: [PATCH] fix: prefer `sass`/`scss`/`css` extensions --- lib/loader.js | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/lib/loader.js b/lib/loader.js index cb90888b..7a572d53 100644 --- a/lib/loader.js +++ b/lib/loader.js @@ -12,6 +12,23 @@ const normalizeOptions = require('./normalizeOptions'); let nodeSassJobQueue = null; +// Very hacky check +function hasGetResolve(loaderContext) { + return ( + loaderContext.getResolve && + // eslint-disable-next-line no-underscore-dangle + loaderContext._compiler && + // eslint-disable-next-line no-underscore-dangle + loaderContext._compiler.resolverFactory && + // eslint-disable-next-line no-underscore-dangle + loaderContext._compiler.resolverFactory._create && + /cachedCleverMerge/.test( + // eslint-disable-next-line no-underscore-dangle + loaderContext._compiler.resolverFactory._create.toString() + ) + ); +} + /** * The sass-loader makes node-sass and dart-sass available to webpack modules. * @@ -37,11 +54,11 @@ function sassLoader(content) { let resolve = pify(this.resolve); - // Supported since v4.27.0 - if (this.getResolve) { + // Supported since v4.36.0 + if (hasGetResolve(self)) { resolve = this.getResolve({ - mainFields: ['sass', 'main'], - extensions: ['.scss', '.sass', '.css'], + mainFields: ['sass', 'style', '...'], + extensions: ['.scss', '.sass', '.css', '...'], }); }