diff --git a/lib/builder/webpack/base.js b/lib/builder/webpack/base.js
index 7da5ca788d..968b753840 100644
--- a/lib/builder/webpack/base.js
+++ b/lib/builder/webpack/base.js
@@ -136,26 +136,26 @@ export default class WebpackBaseConfig {
},
{
test: /\.css$/,
- use: perfLoader.pool('css', styleLoader.apply('css'))
+ oneOf: perfLoader.poolOneOf('css', styleLoader.apply('css'))
},
{
test: /\.less$/,
- use: perfLoader.pool('css', styleLoader.apply('less', 'less-loader'))
+ oneOf: perfLoader.poolOneOf('css', styleLoader.apply('less', 'less-loader'))
},
{
test: /\.sass$/,
- use: perfLoader.pool('css', styleLoader.apply('sass', {
+ oneOf: perfLoader.poolOneOf('css', styleLoader.apply('sass', {
loader: 'sass-loader',
options: { indentedSyntax: true }
}))
},
{
test: /\.scss$/,
- use: perfLoader.pool('css', styleLoader.apply('scss', 'sass-loader'))
+ oneOf: perfLoader.poolOneOf('css', styleLoader.apply('scss', 'sass-loader'))
},
{
test: /\.styl(us)?$/,
- use: perfLoader.pool('css', styleLoader.apply('stylus', 'stylus-loader'))
+ oneOf: perfLoader.poolOneOf('css', styleLoader.apply('stylus', 'stylus-loader'))
},
{
test: /\.(png|jpe?g|gif|svg)$/,
diff --git a/lib/builder/webpack/utils/perf-loader.js b/lib/builder/webpack/utils/perf-loader.js
index 20c5db4533..6c3de2242c 100644
--- a/lib/builder/webpack/utils/perf-loader.js
+++ b/lib/builder/webpack/utils/perf-loader.js
@@ -53,4 +53,10 @@ export default class PerfLoader {
return loaders
}
+
+ poolOneOf(poolName, oneOfRules) {
+ return oneOfRules.map(rule => Object.assign({}, rule, {
+ use: this.pool(poolName, rule.use)
+ }))
+ }
}
diff --git a/lib/builder/webpack/utils/style-loader.js b/lib/builder/webpack/utils/style-loader.js
index 05d32869b6..8c6be8a00a 100644
--- a/lib/builder/webpack/utils/style-loader.js
+++ b/lib/builder/webpack/utils/style-loader.js
@@ -61,7 +61,7 @@ export default class StyleLoader {
}
}
- css(importLoaders) {
+ css(importLoaders, options) {
// css-loader
// https://github.com/webpack-contrib/css-loader
const cssLoaderAlias = {
@@ -71,12 +71,12 @@ export default class StyleLoader {
return {
loader: (this.isServer && this.extractCSS) ? 'css-loader/locals' : 'css-loader',
- options: {
+ options: Object.assign({
sourceMap: this.sourceMap,
minimize: !this.dev,
importLoaders: importLoaders,
alias: cssLoaderAlias
- }
+ }, options)
}
}
@@ -95,16 +95,35 @@ export default class StyleLoader {
}
apply(ext, loaders = []) {
- const _customLoaders = [].concat(
+ const customLoaders = [].concat(
this.postcss(loaders),
this.styleResource(ext),
this.normalize(loaders)
).filter(Boolean)
- return [].concat(
- this.extract() || this.vueStyle(),
- this.css(_customLoaders.length),
- _customLoaders
- ).filter(Boolean)
+ const styleLoader = this.extract() || this.vueStyle()
+
+ return [
+ // This matches
+
+