MCPcopy
hub / github.com/webpack/sass-loader / getSassOptions

Function getSassOptions

src/utils.js:184–330  ·  view source on GitHub ↗

* Derives the sass options from the loader context and normalizes its values with sane defaults. * @param {LoaderContext} loaderContext loader context * @param {LoaderOptions} loaderOptions loader options * @param {string} content content * @param {boolean} useSourceMap true when need to generat

(
  loaderContext,
  loaderOptions,
  content,
  useSourceMap,
)

Source from the content-addressed store, hash-verified

182 * @returns {Promise<Required<KnownSassOptions> & { data: string }>} sass options
183 */
184async function getSassOptions(
185 loaderContext,
186 loaderOptions,
187 content,
188 useSourceMap,
189) {
190 /** @type {SassOptions} */
191 const options = loaderOptions.sassOptions
192 ? typeof loaderOptions.sassOptions === "function"
193 ? loaderOptions.sassOptions(loaderContext) || {}
194 : loaderOptions.sassOptions
195 : {};
196 /** @type {KnownSassOptions & { data: string }} */
197 const sassOptions = {
198 ...options,
199 data: loaderOptions.additionalData
200 ? typeof loaderOptions.additionalData === "function"
201 ? await loaderOptions.additionalData(content, loaderContext)
202 : `${loaderOptions.additionalData}\n${content}`
203 : content,
204 };
205
206 if (!sassOptions.logger) {
207 const needEmitWarning = loaderOptions.warnRuleAsWarning !== false;
208 const logger = loaderContext.getLogger("sass-loader");
209 /**
210 * @param {SourceSpan} span span
211 * @returns {string} formatted span
212 */
213 const formatSpan = (span) =>
214 `Warning on line ${span.start.line}, column ${span.start.column} of ${
215 span.url || "-"
216 }:${span.start.line}:${span.start.column}:\n`;
217 /**
218 * @param {SourceSpan} span span
219 * @returns {string} formatted debug span
220 */
221 const formatDebugSpan = (span) =>
222 `[debug:${span.start.line}:${span.start.column}] `;
223
224 sassOptions.logger = {
225 /**
226 * @param {string} message message
227 * @param {{ span: SourceSpan }} loggerOptions logger options
228 * @returns {void}
229 */
230 debug(message, loggerOptions) {
231 let builtMessage = "";
232
233 if (loggerOptions.span) {
234 builtMessage = formatDebugSpan(loggerOptions.span);
235 }
236
237 builtMessage += message;
238
239 logger.debug(builtMessage);
240 },
241 /**

Callers 1

loaderFunction · 0.90

Calls 1

isProductionLikeModeFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…