function generateLoaders(loaders) {
    const sourceLoader = loaders.map(function (loader) {
      let extraParamChar;
      if (/\?/.test(loader)) {
        loader = loader.replace(/\?/, '-loader?');
        extraParamChar = '&';
      } else {
        loader = loader + '-loader';
        extraParamChar = '?';
      }
      return loader + (options.sourceMap ? extraParamChar + 'sourceMap' : '');
    })
      .join('!');

    return ['style-loader?singleton=true', sourceLoader].join('!');
  }
// generate loader string to be used with extract text plugin
generate loader string to be used with extract text plugin
generate loader string to be used with extract text plugin
function generateLoaders(loaders) {
    const sourceLoader = loaders.map(function (loader) {
      let extraParamChar;
      if (/\?/.test(loader)) {
        loader = loader.replace(/\?/, '-loader?');
        extraParamChar = '&';
      } else {
        loader = loader + '-loader';
        extraParamChar = '?';
      }
      return loader + (options.sourceMap ? extraParamChar + 'sourceMap' : '');
    })
      .join('!');
    return ['style-loader?singleton=true', sourceLoader].join('!');
  }
function generateLoaders ( loaders ) { const sourceLoader = loaders . map ( function ( loader ) { let extraParamChar ; if ( / \? / . test ( loader ) ) { loader = loader . replace ( / \? / , '-loader?' ) ; extraParamChar = '&' ; } else { loader = loader + '-loader' ; extraParamChar = '?' ; } return loader + ( options . sourceMap ? extraParamChar + 'sourceMap' : '' ) ; } ) . join ( '!' ) ; return [ 'style-loader?singleton=true' , sourceLoader ] . join ( '!' ) ; }
generate loader string to be used with extract text plugin
generate loader string to be used with extract text plugin