Skip to content

Commit ecb623c

Browse files
committed
Allow to replace options in configuration callbacks
1 parent ccbae35 commit ecb623c

34 files changed

+413
-29
lines changed

lib/loaders/babel.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,15 @@ module.exports = {
6868
}
6969

7070
// allow for babel config to be controlled
71-
webpackConfig.babelConfigurationCallback.apply(
71+
const callbackResult = webpackConfig.babelConfigurationCallback.apply(
7272
// use babelConfig as the this variable
7373
babelConfig,
7474
[babelConfig]
7575
);
76+
77+
if (callbackResult instanceof Object) {
78+
babelConfig = callbackResult;
79+
}
7680
}
7781

7882
return [

lib/loaders/coffee-script.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,23 @@ module.exports = {
1919
getLoaders(webpackConfig) {
2020
loaderFeatures.ensurePackagesExist('coffeescript');
2121

22-
const options = {
22+
let options = {
2323
sourceMap: webpackConfig.useSourceMaps,
2424
transpile: {
2525
presets: ['env']
2626
}
2727
};
2828

2929
// allow options to be configured
30-
webpackConfig.coffeeScriptConfigurationCallback.apply(
30+
const callbackResult = webpackConfig.coffeeScriptConfigurationCallback.apply(
3131
options,
3232
[options]
3333
);
3434

35+
if (callbackResult instanceof Object) {
36+
options = callbackResult;
37+
}
38+
3539
return [
3640
{
3741
loader: 'coffee-loader',

lib/loaders/css.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,17 +38,21 @@ module.exports = {
3838
if (usePostCssLoader) {
3939
loaderFeatures.ensurePackagesExist('postcss');
4040

41-
const postCssLoaderOptions = {
41+
let postCssLoaderOptions = {
4242
sourceMap: webpackConfig.useSourceMaps
4343
};
4444

4545
// allow options to be configured
46-
webpackConfig.postCssLoaderOptionsCallback.apply(
46+
const callbackResult = webpackConfig.postCssLoaderOptionsCallback.apply(
4747
// use config as the this variable
4848
postCssLoaderOptions,
4949
[postCssLoaderOptions]
5050
);
5151

52+
if (callbackResult instanceof Object) {
53+
postCssLoaderOptions = callbackResult;
54+
}
55+
5256
cssLoaders.push({
5357
loader: 'postcss-loader',
5458
options: postCssLoaderOptions

lib/loaders/less.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,21 @@ module.exports = {
2121
getLoaders(webpackConfig, ignorePostCssLoader = false) {
2222
loaderFeatures.ensurePackagesExist('less');
2323

24-
const config = {
24+
let config = {
2525
sourceMap: webpackConfig.useSourceMaps
2626
};
2727

2828
// allow options to be configured
29-
webpackConfig.lessLoaderOptionsCallback.apply(
29+
const callbackResult = webpackConfig.lessLoaderOptionsCallback.apply(
3030
// use config as the this variable
3131
config,
3232
[config]
3333
);
3434

35+
if (callbackResult instanceof Object) {
36+
config = callbackResult;
37+
}
38+
3539
return [
3640
...cssLoader.getLoaders(webpackConfig, ignorePostCssLoader),
3741
{

lib/loaders/sass.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,16 @@ module.exports = {
4141
});
4242

4343
// allow options to be configured
44-
webpackConfig.sassLoaderOptionsCallback.apply(
44+
const callbackResult = webpackConfig.sassLoaderOptionsCallback.apply(
4545
// use config as the this variable
4646
config,
4747
[config]
4848
);
4949

50+
if (callbackResult instanceof Object) {
51+
config = callbackResult;
52+
}
53+
5054
sassLoaders.push({
5155
loader: 'sass-loader',
5256
options: config,

lib/loaders/stylus.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,21 @@ module.exports = {
2121
getLoaders(webpackConfig, ignorePostCssLoader = false) {
2222
loaderFeatures.ensurePackagesExist('stylus');
2323

24-
const config = {
24+
let config = {
2525
sourceMap: webpackConfig.useSourceMaps
2626
};
2727

2828
// allow options to be configured
29-
webpackConfig.stylusLoaderOptionsCallback.apply(
29+
const callbackResult = webpackConfig.stylusLoaderOptionsCallback.apply(
3030
// use config as the this variable
3131
config,
3232
[config]
3333
);
3434

35+
if (callbackResult instanceof Object) {
36+
config = callbackResult;
37+
}
38+
3539
return [
3640
...cssLoader.getLoaders(webpackConfig, ignorePostCssLoader),
3741
{

lib/loaders/typescript.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,16 @@ module.exports = {
2626
};
2727

2828
// allow for ts-loader config to be controlled
29-
webpackConfig.tsConfigurationCallback.apply(
29+
const callbackResult = webpackConfig.tsConfigurationCallback.apply(
3030
// use config as the this variable
3131
config,
3232
[config]
3333
);
3434

35+
if (callbackResult instanceof Object) {
36+
config = callbackResult;
37+
}
38+
3539
// fork-ts-checker-webpack-plugin integration
3640
if (webpackConfig.useForkedTypeScriptTypeChecking) {
3741
loaderFeatures.ensurePackagesExist('forkedtypecheck');

lib/loaders/vue.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,13 @@ module.exports = {
120120
let options = {
121121
loaders: loaders
122122
};
123+
123124
// allow the options to be mutated via a callback
124-
vueLoaderOptionsCallback(options);
125+
const callbackResult = vueLoaderOptionsCallback(options);
126+
127+
if (callbackResult instanceof Object) {
128+
options = callbackResult;
129+
}
125130

126131
return [
127132
{

lib/plugins/clean.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,20 @@ module.exports = function(plugins, webpackConfig) {
2525
return;
2626
}
2727

28-
const cleanWebpackPluginOptions = {
28+
let cleanWebpackPluginOptions = {
2929
root: webpackConfig.outputPath,
3030
verbose: false,
3131
};
3232

33-
webpackConfig.cleanWebpackPluginOptionsCallback.apply(
33+
const callbackResult = webpackConfig.cleanWebpackPluginOptionsCallback.apply(
3434
cleanWebpackPluginOptions,
3535
[cleanWebpackPluginOptions]
3636
);
3737

38+
if (callbackResult instanceof Object) {
39+
cleanWebpackPluginOptions = callbackResult;
40+
}
41+
3842
plugins.push({
3943
plugin: new CleanWebpackPlugin(
4044
webpackConfig.cleanWebpackPluginPaths,

lib/plugins/define.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,21 @@ const PluginPriorities = require('./plugin-priorities');
1818
* @return {void}
1919
*/
2020
module.exports = function(plugins, webpackConfig) {
21-
const definePluginOptions = {
21+
let definePluginOptions = {
2222
'process.env': {
2323
NODE_ENV: webpackConfig.isProduction() ? '"production"' : '"development"'
2424
}
2525
};
2626

27-
webpackConfig.definePluginOptionsCallback.apply(
27+
const callbackResult = webpackConfig.definePluginOptionsCallback.apply(
2828
definePluginOptions,
2929
[definePluginOptions]
3030
);
3131

32+
if (callbackResult instanceof Object) {
33+
definePluginOptions = callbackResult;
34+
}
35+
3236
plugins.push({
3337
plugin: new webpack.DefinePlugin(definePluginOptions),
3438
priority: PluginPriorities.DefinePlugin

0 commit comments

Comments
 (0)