From 40e39bde1a48ee1f114cb75f8cc0e1a4a5b7b532 Mon Sep 17 00:00:00 2001 From: jakwuh Date: Mon, 16 Jan 2017 22:52:00 +0300 Subject: [PATCH 1/3] Add support for webpack2 loader options. Fixes #115. Fixes #128. --- index.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/index.js b/index.js index ffb11ee0..eab3bc8a 100644 --- a/index.js +++ b/index.js @@ -51,6 +51,11 @@ module.exports = function(source) { config.plugins = config.plugins.concat(this.options[configKey].lessPlugins || []); } + // Also support webpack 2 loader.options. + if (query.lessPlugins) { + config.plugins = config.plugins.concat(query.lessPlugins); + } + // not using the `this.sourceMap` flag because css source maps are different // @see https://github.com/webpack/css-loader/pull/40 if (query.sourceMap) { From 1f93bd09adacfef0c21fe653773fcd1d45db7115 Mon Sep 17 00:00:00 2001 From: jakwuh Date: Fri, 20 Jan 2017 16:28:57 +0300 Subject: [PATCH 2/3] Make use of loaderUtils.getLoaderConfig --- index.js | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/index.js b/index.js index eab3bc8a..1f622a5b 100644 --- a/index.js +++ b/index.js @@ -19,7 +19,6 @@ module.exports = function(source) { var cb = this.async(); var isSync = typeof cb !== "function"; var finalCb = cb || this.callback; - var configKey = query.config || "lessLoader"; var config = { filename: this.resource, paths: [], @@ -47,14 +46,8 @@ module.exports = function(source) { config.plugins.push(webpackPlugin); // If present, add custom LESS plugins. - if (this.options[configKey]) { - config.plugins = config.plugins.concat(this.options[configKey].lessPlugins || []); - } - - // Also support webpack 2 loader.options. - if (query.lessPlugins) { - config.plugins = config.plugins.concat(query.lessPlugins); - } + var customPlugins = loaderUtils.getLoaderConfig(this, "lessLoader").lessPlugins || []; + config.plugins = config.plugins.concat(customPlugins); // not using the `this.sourceMap` flag because css source maps are different // @see https://github.com/webpack/css-loader/pull/40 From c58a325b3d840195e054010a2ec237f01532facd Mon Sep 17 00:00:00 2001 From: jakwuh Date: Fri, 20 Jan 2017 16:47:50 +0300 Subject: [PATCH 3/3] Drop loader query, use loader config --- index.js | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/index.js b/index.js index 1f622a5b..8f90badc 100644 --- a/index.js +++ b/index.js @@ -15,7 +15,7 @@ var trailingSlash = /[\\\/]$/; module.exports = function(source) { var loaderContext = this; - var query = loaderUtils.parseQuery(this.query); + var loaderConfig = loaderUtils.getLoaderConfig(this, "lessLoader"); var cb = this.async(); var isSync = typeof cb !== "function"; var finalCb = cb || this.callback; @@ -27,7 +27,7 @@ module.exports = function(source) { }; var webpackPlugin = { install: function(less, pluginManager) { - var WebpackFileManager = getWebpackFileManager(less, loaderContext, query, isSync); + var WebpackFileManager = getWebpackFileManager(less, loaderContext, loaderConfig, isSync); pluginManager.addFileManager(new WebpackFileManager()); }, @@ -36,22 +36,23 @@ module.exports = function(source) { this.cacheable && this.cacheable(); - Object.keys(query).forEach(function(attr) { - config[attr] = query[attr]; + Object.keys(loaderConfig).forEach(function(attr) { + config[attr] = loaderConfig[attr]; }); + + delete config.lessPlugins; // Now we're adding the webpack plugin, because there might have - // been added some before via query-options. + // been added some before via loaderConfig. config.plugins = config.plugins || []; config.plugins.push(webpackPlugin); // If present, add custom LESS plugins. - var customPlugins = loaderUtils.getLoaderConfig(this, "lessLoader").lessPlugins || []; - config.plugins = config.plugins.concat(customPlugins); + config.plugins = config.plugins.concat(loaderConfig.lessPlugins || []); // not using the `this.sourceMap` flag because css source maps are different // @see https://github.com/webpack/css-loader/pull/40 - if (query.sourceMap) { + if (loaderConfig.sourceMap) { config.sourceMap = { outputSourceFiles: true }; @@ -69,7 +70,7 @@ module.exports = function(source) { }); }; -function getWebpackFileManager(less, loaderContext, query, isSync) { +function getWebpackFileManager(less, loaderContext, loaderConfig, isSync) { function WebpackFileManager() { less.FileManager.apply(this, arguments); @@ -100,7 +101,7 @@ function getWebpackFileManager(less, loaderContext, query, isSync) { return; } - var moduleRequest = loaderUtils.urlToRequest(filename, query.root); + var moduleRequest = loaderUtils.urlToRequest(filename, loaderConfig.root); // Less is giving us trailing slashes, but the context should have no trailing slash var context = currentDirectory.replace(trailingSlash, ""); @@ -127,7 +128,7 @@ function getWebpackFileManager(less, loaderContext, query, isSync) { }; WebpackFileManager.prototype.loadFileSync = util.deprecate(function(filename, currentDirectory, options, environment) { - var moduleRequest = loaderUtils.urlToRequest(filename, query.root); + var moduleRequest = loaderUtils.urlToRequest(filename, loaderConfig.root); // Less is giving us trailing slashes, but the context should have no trailing slash var context = currentDirectory.replace(trailingSlash, ""); var data;