webpack loaders run right to left

A loader chain reads like a pipeline and executes like function composition, which is the opposite direction. The last entry in the array runs first.

{
  test: /.scss$/,
  loaders: ['style', 'css', 'sass']
  //         3rd     2nd    1st
}

Sass compiles to CSS, css-loader resolves @import and url() in it, and style-loader injects the result into the document. Written in the other order it fails with an error about the CSS parser not understanding Sass syntax, which is the giveaway. Thinking of it as style(css(sass(file))) makes the order obvious and stops it being a thing to memorise.