lib/loader.js
function ensureLoader (lang) {
    return lang.split('!').map(function (loader) {
      return loader.replace(/^([\w-]+)(\?.*)?/, function (_, name, query) {
        return (/-loader$/.test(name) ? name : (name + '-loader')) + (query || '')
      })
    }).join('!')
  }
function ensureLoader (lang) {
    return lang.split('!').map(function (loader) {
      return loader.replace(/^([\w-]+)(\?.*)?/, function (_, name, query) {
        return (/-loader$/.test(name) ? name : (name + '-loader')) + (query || '')
      })
    }).join('!')
  }
function ensureLoader ( lang ) { return lang . split ( '!' ) . map ( function ( loader ) { return loader . replace ( / ^([\w-]+)(\?.*)? / , function ( _ , name , query ) { return ( / -loader$ / . test ( name ) ? name : ( name + '-loader' ) ) + ( query || '' ) } ) } ) . join ( '!' ) }
sass => sass-loader sass-loader => sass-loader sass?indentedsyntax!css => sass-loader?indentedSyntax!css-loader
sass = > sass - loader sass - loader = > sass - loader sass?indentedsyntax!css = > sass - loader?indentedSyntax!css - loader