sasswebpacklibsass

How can I specify a resource root for SCSS includes in my Webpack sass-loader config?


Say I have something like:

{
  test: /\.scss$/,
  exclude: /node_modules/,
  loaders: ['style-loader', 'css-loader', 'sass-loader']
}

in my webpack config and I have a app/ sub folder with all my SCSS and JS files in.

Currently to import an SCSS partial I have to @import 'app/whatever/my_partial'; for it to be recognised.

How can I set the loader to treat app/ as a resource root for these files so I can just say @import 'whatever/my_partial' ?

This is with Webpack 2.x btw.

Any help from you clever people much appreciated!


Solution

  • You can add app/ to the includePaths option in the sass-loader. Your .scss rules has to be changed to:

    {
      test: /\.scss$/,
      exclude: /node_modules/,
      use: [
        'style-loader',
        'css-loader',
        {
          loader: 'sass-loader',
          options: {
            includePaths: [path.resolve(process.cwd(), 'app')]
          }
        }
      ]
    }