Skip to content

Allow to replace options in configuration callbacks #300

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Apr 14, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/config-generator.js
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ class ConfigGenerator {
if (this.webpackConfig.useVueLoader) {
rules.push({
test: /\.vue$/,
use: vueLoaderUtil.getLoaders(this.webpackConfig, this.webpackConfig.vueLoaderOptionsCallback)
use: vueLoaderUtil.getLoaders(this.webpackConfig)
});
}

Expand Down
8 changes: 2 additions & 6 deletions lib/loaders/babel.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
'use strict';

const loaderFeatures = require('../features');
const applyOptionsCallback = require('../utils/apply-options-callback');

/**
* @param {WebpackConfig} webpackConfig
Expand Down Expand Up @@ -67,12 +68,7 @@ module.exports = {
}
}

// allow for babel config to be controlled
webpackConfig.babelConfigurationCallback.apply(
// use babelConfig as the this variable
babelConfig,
[babelConfig]
);
babelConfig = applyOptionsCallback(webpackConfig.babelConfigurationCallback, babelConfig);
}

return [
Expand Down
9 changes: 2 additions & 7 deletions lib/loaders/coffee-script.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
'use strict';

const loaderFeatures = require('../features');
const applyOptionsCallback = require('../utils/apply-options-callback');

/**
* @param {WebpackConfig} webpackConfig
Expand All @@ -26,16 +27,10 @@ module.exports = {
}
};

// allow options to be configured
webpackConfig.coffeeScriptConfigurationCallback.apply(
options,
[options]
);

return [
{
loader: 'coffee-loader',
options: options,
options: applyOptionsCallback(webpackConfig.coffeeScriptConfigurationCallback, options)
},
];
}
Expand Down
10 changes: 2 additions & 8 deletions lib/loaders/css.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
'use strict';

const loaderFeatures = require('../features');
const applyOptionsCallback = require('../utils/apply-options-callback');

/**
* @param {WebpackConfig} webpackConfig
Expand Down Expand Up @@ -42,16 +43,9 @@ module.exports = {
sourceMap: webpackConfig.useSourceMaps
};

// allow options to be configured
webpackConfig.postCssLoaderOptionsCallback.apply(
// use config as the this variable
postCssLoaderOptions,
[postCssLoaderOptions]
);

cssLoaders.push({
loader: 'postcss-loader',
options: postCssLoaderOptions
options: applyOptionsCallback(webpackConfig.postCssLoaderOptionsCallback, postCssLoaderOptions)
});
}

Expand Down
10 changes: 2 additions & 8 deletions lib/loaders/less.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

const loaderFeatures = require('../features');
const cssLoader = require('./css');
const applyOptionsCallback = require('../utils/apply-options-callback');

/**
* @param {WebpackConfig} webpackConfig
Expand All @@ -25,18 +26,11 @@ module.exports = {
sourceMap: webpackConfig.useSourceMaps
};

// allow options to be configured
webpackConfig.lessLoaderOptionsCallback.apply(
// use config as the this variable
config,
[config]
);

return [
...cssLoader.getLoaders(webpackConfig, ignorePostCssLoader),
{
loader: 'less-loader',
options: config
options: applyOptionsCallback(webpackConfig.lessLoaderOptionsCallback, config)
},
];
}
Expand Down
12 changes: 3 additions & 9 deletions lib/loaders/sass.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

const loaderFeatures = require('../features');
const cssLoader = require('./css');
const applyOptionsCallback = require('../utils/apply-options-callback');

/**
* @param {WebpackConfig} webpackConfig
Expand All @@ -35,21 +36,14 @@ module.exports = {
});
}

let config = Object.assign({}, sassOptions, {
const config = Object.assign({}, sassOptions, {
// needed by the resolve-url-loader
sourceMap: (true === webpackConfig.sassOptions.resolveUrlLoader) || webpackConfig.useSourceMaps
});

// allow options to be configured
webpackConfig.sassLoaderOptionsCallback.apply(
// use config as the this variable
config,
[config]
);

sassLoaders.push({
loader: 'sass-loader',
options: config,
options: applyOptionsCallback(webpackConfig.sassLoaderOptionsCallback, config)
});

return sassLoaders;
Expand Down
10 changes: 2 additions & 8 deletions lib/loaders/stylus.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

const loaderFeatures = require('../features');
const cssLoader = require('./css');
const applyOptionsCallback = require('../utils/apply-options-callback');

/**
* @param {WebpackConfig} webpackConfig
Expand All @@ -25,18 +26,11 @@ module.exports = {
sourceMap: webpackConfig.useSourceMaps
};

// allow options to be configured
webpackConfig.stylusLoaderOptionsCallback.apply(
// use config as the this variable
config,
[config]
);

return [
...cssLoader.getLoaders(webpackConfig, ignorePostCssLoader),
{
loader: 'stylus-loader',
options: config
options: applyOptionsCallback(webpackConfig.stylusLoaderOptionsCallback, config)
},
];
}
Expand Down
7 changes: 2 additions & 5 deletions lib/loaders/typescript.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

const loaderFeatures = require('../features');
const babelLoader = require('./babel');
const applyOptionsCallback = require('../utils/apply-options-callback');

/**
* @param {WebpackConfig} webpackConfig
Expand All @@ -26,11 +27,7 @@ module.exports = {
};

// allow for ts-loader config to be controlled
webpackConfig.tsConfigurationCallback.apply(
// use config as the this variable
config,
[config]
);
config = applyOptionsCallback(webpackConfig.tsConfigurationCallback, config);

// fork-ts-checker-webpack-plugin integration
if (webpackConfig.useForkedTypeScriptTypeChecking) {
Expand Down
10 changes: 4 additions & 6 deletions lib/loaders/vue.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@ const sassLoaderUtil = require('./sass');
const lessLoaderUtil = require('./less');
const babelLoaderUtil = require('./babel');
const extractText = require('./extract-text');
const applyOptionsCallback = require('../utils/apply-options-callback');

/**
* @param {WebpackConfig} webpackConfig
* @param {function} vueLoaderOptionsCallback
* @return {Array} of loaders to use for Vue files
*/
module.exports = {
getLoaders(webpackConfig, vueLoaderOptionsCallback) {
getLoaders(webpackConfig) {
loaderFeatures.ensurePackagesExist('vue');

/*
Expand Down Expand Up @@ -117,16 +117,14 @@ module.exports = {
};
}

let options = {
const options = {
loaders: loaders
};
// allow the options to be mutated via a callback
vueLoaderOptionsCallback(options);

return [
{
loader: 'vue-loader',
options: options
options: applyOptionsCallback(webpackConfig.vueLoaderOptionsCallback, options)
}
];
}
Expand Down
8 changes: 2 additions & 6 deletions lib/plugins/clean.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

const CleanWebpackPlugin = require('clean-webpack-plugin');
const PluginPriorities = require('./plugin-priorities');
const applyOptionsCallback = require('../utils/apply-options-callback');

/**
* Updates plugins array passed adding CleanWebpackPlugin instance
Expand All @@ -30,15 +31,10 @@ module.exports = function(plugins, webpackConfig) {
verbose: false,
};

webpackConfig.cleanWebpackPluginOptionsCallback.apply(
cleanWebpackPluginOptions,
[cleanWebpackPluginOptions]
);

plugins.push({
plugin: new CleanWebpackPlugin(
webpackConfig.cleanWebpackPluginPaths,
cleanWebpackPluginOptions
applyOptionsCallback(webpackConfig.cleanWebpackPluginOptionsCallback, cleanWebpackPluginOptions)
),
priority: PluginPriorities.CleanWebpackPlugin
});
Expand Down
10 changes: 4 additions & 6 deletions lib/plugins/define.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

const webpack = require('webpack');
const PluginPriorities = require('./plugin-priorities');
const applyOptionsCallback = require('../utils/apply-options-callback');

/**
* @param {Array} plugins
Expand All @@ -24,13 +25,10 @@ module.exports = function(plugins, webpackConfig) {
}
};

webpackConfig.definePluginOptionsCallback.apply(
definePluginOptions,
[definePluginOptions]
);

plugins.push({
plugin: new webpack.DefinePlugin(definePluginOptions),
plugin: new webpack.DefinePlugin(
applyOptionsCallback(webpackConfig.definePluginOptionsCallback, definePluginOptions)
),
priority: PluginPriorities.DefinePlugin
});
};
10 changes: 4 additions & 6 deletions lib/plugins/extract-text.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

const ExtractTextPlugin = require('extract-text-webpack-plugin');
const PluginPriorities = require('./plugin-priorities');
const applyOptionsCallback = require('../utils/apply-options-callback');

/**
* @param {Array} plugins
Expand Down Expand Up @@ -45,13 +46,10 @@ module.exports = function(plugins, webpackConfig) {
allChunks: false
};

webpackConfig.extractTextPluginOptionsCallback.apply(
extractTextPluginOptions,
[extractTextPluginOptions]
);

plugins.push({
plugin: new ExtractTextPlugin(extractTextPluginOptions),
plugin: new ExtractTextPlugin(
applyOptionsCallback(webpackConfig.extractTextPluginOptionsCallback, extractTextPluginOptions)
),
priority: PluginPriorities.ExtractTextWebpackPlugin
});
};
14 changes: 5 additions & 9 deletions lib/plugins/forked-ts-types.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,23 +11,19 @@

const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin'); // eslint-disable-line
const PluginPriorities = require('./plugin-priorities');
const applyOptionsCallback = require('../utils/apply-options-callback');

/**
* @param {WebpackConfig} webpackConfig
* @return {void}
*/
module.exports = function(webpackConfig) {
let config = {};

// allow for ts-loader config to be controlled
webpackConfig.forkedTypeScriptTypesCheckOptionsCallback.apply(
// use config as the this variable
config,
[config]
);
const config = {};

webpackConfig.addPlugin(
new ForkTsCheckerWebpackPlugin(config),
new ForkTsCheckerWebpackPlugin(
applyOptionsCallback(webpackConfig.forkedTypeScriptTypesCheckOptionsCallback, config)
),
PluginPriorities.ForkTsCheckerWebpackPlugin
);
};
8 changes: 3 additions & 5 deletions lib/plugins/friendly-errors.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ const missingPostCssConfigTransformer = require('../friendly-errors/transformers
const missingPostCssConfigFormatter = require('../friendly-errors/formatters/missing-postcss-config');
const vueUnactivatedLoaderTransformer = require('../friendly-errors/transformers/vue-unactivated-loader-error');
const vueUnactivatedLoaderFormatter = require('../friendly-errors/formatters/vue-unactivated-loader-error');
const applyOptionsCallback = require('../utils/apply-options-callback');

/**
* @param {WebpackConfig} webpackConfig
Expand All @@ -39,10 +40,7 @@ module.exports = function(webpackConfig) {
}
};

webpackConfig.friendlyErrorsPluginOptionsCallback.apply(
friendlyErrorsPluginOptions,
[friendlyErrorsPluginOptions]
return new FriendlyErrorsWebpackPlugin(
applyOptionsCallback(webpackConfig.friendlyErrorsPluginOptionsCallback, friendlyErrorsPluginOptions)
);

return new FriendlyErrorsWebpackPlugin(friendlyErrorsPluginOptions);
};
10 changes: 4 additions & 6 deletions lib/plugins/loader-options.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

const webpack = require('webpack');
const PluginPriorities = require('./plugin-priorities');
const applyOptionsCallback = require('../utils/apply-options-callback');

/**
* @param {Array} plugins
Expand All @@ -35,13 +36,10 @@ module.exports = function(plugins, webpackConfig) {
}
};

webpackConfig.loaderOptionsPluginOptionsCallback.apply(
loaderOptionsPluginOptions,
[loaderOptionsPluginOptions]
);

plugins.push({
plugin: new webpack.LoaderOptionsPlugin(loaderOptionsPluginOptions),
plugin: new webpack.LoaderOptionsPlugin(
applyOptionsCallback(webpackConfig.loaderOptionsPluginOptionsCallback, loaderOptionsPluginOptions)
),
priority: PluginPriorities.LoaderOptionsPlugin
});
};
Loading