From 0a68bb488032aab7deb277aa04b6fd9fc3fdf2b1 Mon Sep 17 00:00:00 2001 From: Evilebot Tnawi Date: Tue, 27 Nov 2018 20:35:52 +0300 Subject: [PATCH] refactor: code (#811) --- lib/loader.js | 23 ++++++----------------- lib/localsLoader.js | 11 ++++------- lib/processCss.js | 41 +++++++++++++++++++++-------------------- 3 files changed, 31 insertions(+), 44 deletions(-) diff --git a/lib/loader.js b/lib/loader.js index 629c9977..e42ca414 100644 --- a/lib/loader.js +++ b/lib/loader.js @@ -9,10 +9,8 @@ const { getImportPrefix, compileExports } = require('./utils'); module.exports = function loader(content, map) { const callback = this.async(); - const query = loaderUtils.getOptions(this) || {}; - const moduleMode = query.modules; - const camelCaseKeys = query.camelCase; - const sourceMap = query.sourceMap || false; + const options = loaderUtils.getOptions(this) || {}; + const sourceMap = options.sourceMap || false; /* eslint-disable no-param-reassign */ if (sourceMap) { @@ -36,17 +34,8 @@ module.exports = function loader(content, map) { content, map, { - mode: moduleMode ? 'local' : 'global', - from: loaderUtils - .getRemainingRequest(this) - .split('!') - .pop(), - to: loaderUtils - .getCurrentRequest(this) - .split('!') - .pop(), - query, loaderContext: this, + loaderOptions: options, sourceMap, }, (err, result) => { @@ -57,7 +46,7 @@ module.exports = function loader(content, map) { let cssAsString = JSON.stringify(result.source); // for importing CSS - const importUrlPrefix = getImportPrefix(this, query); + const importUrlPrefix = getImportPrefix(this, options); const alreadyImported = {}; const importJs = result.importItems @@ -109,7 +98,7 @@ module.exports = function loader(content, map) { // helper for ensuring valid CSS strings from requires let urlEscapeHelper = ''; - if (query.url !== false && result.urlItems.length > 0) { + if (options.url !== false && result.urlItems.length > 0) { urlEscapeHelper = `var escape = require(${loaderUtils.stringifyRequest( this, require.resolve('./runtime/escape.js') @@ -145,7 +134,7 @@ module.exports = function loader(content, map) { let exportJs = compileExports( result, importItemMatcher.bind(this), - camelCaseKeys + options.camelCase ); if (exportJs) { exportJs = `exports.locals = ${exportJs};`; diff --git a/lib/localsLoader.js b/lib/localsLoader.js index 9eeac21e..f7431cf9 100644 --- a/lib/localsLoader.js +++ b/lib/localsLoader.js @@ -9,17 +9,14 @@ const { getImportPrefix, compileExports } = require('./utils'); module.exports = function loader(content) { const callback = this.async(); - const query = loaderUtils.getOptions(this) || {}; - const moduleMode = query.modules; - const camelCaseKeys = query.camelCase; + const options = loaderUtils.getOptions(this) || {}; processCss( content, null, { - mode: moduleMode ? 'local' : 'global', - query, loaderContext: this, + loaderOptions: options, }, (err, result) => { if (err) { @@ -27,7 +24,7 @@ module.exports = function loader(content) { } // for importing CSS - const importUrlPrefix = getImportPrefix(this, query); + const importUrlPrefix = getImportPrefix(this, options); function importItemMatcher(item) { const match = result.importItemRegExp.exec(item); @@ -43,7 +40,7 @@ module.exports = function loader(content) { let exportJs = compileExports( result, importItemMatcher.bind(this), - camelCaseKeys + options.camelCase ); if (exportJs) { exportJs = `module.exports = ${exportJs};`; diff --git a/lib/processCss.js b/lib/processCss.js index 90b01d49..fa348569 100644 --- a/lib/processCss.js +++ b/lib/processCss.js @@ -16,23 +16,20 @@ const Warning = require('./Warning'); const CssSyntaxError = require('./CssSyntaxError'); const { getLocalIdent } = require('./utils'); -module.exports = function processCss(inputSource, inputMap, options, callback) { - const { query } = options; - const { context, localIdentRegExp } = query; - const localIdentName = query.localIdentName || '[hash:base64]'; - const customGetLocalIdent = query.getLocalIdent || getLocalIdent; +module.exports = function processCss(content, map, options, callback) { + const { loaderContext, loaderOptions } = options; + const localIdentName = loaderOptions.localIdentName || '[hash:base64]'; + const customGetLocalIdent = loaderOptions.getLocalIdent || getLocalIdent; const parserOptions = { - mode: options.mode, - url: query.url !== false, - import: query.import !== false, - resolve: options.resolve, + url: loaderOptions.url !== false, + import: loaderOptions.import !== false, }; const pipeline = postcss([ modulesValues, localByDefault({ - mode: options.mode, + mode: loaderOptions.modules ? 'local' : 'global', rewriteUrl(global, url) { if (parserOptions.url) { // eslint-disable-next-line no-param-reassign @@ -59,9 +56,9 @@ module.exports = function processCss(inputSource, inputMap, options, callback) { localIdentName, exportName, { - regExp: localIdentRegExp, - hashPrefix: query.hashPrefix || '', - context, + regExp: loaderOptions.localIdentRegExp, + hashPrefix: loaderOptions.hashPrefix || '', + context: loaderOptions.context, } ); }, @@ -70,13 +67,19 @@ module.exports = function processCss(inputSource, inputMap, options, callback) { ]); pipeline - .process(inputSource, { + .process(content, { // we need a prefix to avoid path rewriting of PostCSS - from: `/css-loader!${options.from}`, - to: options.to, + from: `/css-loader!${loaderUtils + .getRemainingRequest(loaderContext) + .split('!') + .pop()}`, + to: loaderUtils + .getCurrentRequest(loaderContext) + .split('!') + .pop(), map: options.sourceMap ? { - prev: inputMap, + prev: map, sourcesContent: true, inline: false, annotation: false, @@ -86,9 +89,7 @@ module.exports = function processCss(inputSource, inputMap, options, callback) { .then((result) => { result .warnings() - .forEach((warning) => - options.loaderContext.emitWarning(new Warning(warning)) - ); + .forEach((warning) => loaderContext.emitWarning(new Warning(warning))); callback(null, { source: result.css,