12345678910111213141516171819202122232425262728293031323334 |
- const normalizeRule = require('./normalize-rule');
- const isWebpack1 = require('./is-webpack-1');
- /**
- * webpack 1 compat loader options finder. Returns normalized options.
- * @param {string} loaderPath
- * @param {Object|Rule} rule
- * @return {Object|null}
- */
- function getLoaderOptions(loaderPath, rule) {
- let multiRuleProp;
- if (isWebpack1) {
- multiRuleProp = 'loaders';
- } else if (rule.oneOf) {
- multiRuleProp = 'oneOf';
- } else {
- multiRuleProp = 'use';
- }
- const multiRule = typeof rule === 'object' && Array.isArray(rule[multiRuleProp]) ? rule[multiRuleProp] : null;
- let options;
- if (multiRule) {
- const rules = [].concat(...multiRule.map(r => (r.use || r)));
- options = rules.map(normalizeRule).find(r => loaderPath.includes(r.loader)).options;
- } else {
- options = normalizeRule(rule).options;
- }
- return options;
- }
- module.exports = getLoaderOptions;
|