From 6fc9d4e882578b6f449b97b7beeab7656a76a9d7 Mon Sep 17 00:00:00 2001 From: Evilebot Tnawi Date: Thu, 8 Aug 2019 19:43:21 +0300 Subject: [PATCH] fix: prefer `sass`/`scss`/`css` extensions (#711) --- lib/loader.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/lib/loader.js b/lib/loader.js index 86ea39e8..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,8 +54,8 @@ 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', 'style', '...'], extensions: ['.scss', '.sass', '.css', '...'],