Skip to content

Commit c202893

Browse files
TheAlexLichterpi0
authored andcommitted
fix(webpack): correct sass options for sass-loader@8 (nuxt#6460)
1 parent 2275f45 commit c202893

File tree

10 files changed

+305
-21
lines changed

10 files changed

+305
-21
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
"lerna": "^3.16.4",
5959
"lodash": "^4.17.15",
6060
"node-fetch": "^2.6.0",
61+
"node-sass": "^4.12.0",
6162
"puppeteer-core": "^1.20.0",
6263
"request": "^2.88.0",
6364
"request-promise-native": "^1.0.7",
@@ -70,6 +71,7 @@
7071
"rollup-plugin-license": "^0.12.1",
7172
"rollup-plugin-node-resolve": "^5.2.0",
7273
"rollup-plugin-replace": "^2.2.0",
74+
"sass-loader": "^8.0.0",
7375
"sort-package-json": "^1.22.1",
7476
"vue-jest": "^4.0.0-beta.2"
7577
}

packages/config/src/config/build.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@ export default () => ({
4747
},
4848
less: {},
4949
sass: {
50-
indentedSyntax: true
50+
sassOptions: {
51+
indentedSyntax: true
52+
}
5153
},
5254
scss: {},
5355
stylus: {},

packages/config/test/__snapshots__/options.test.js.snap

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,9 @@ Object {
8282
},
8383
"pugPlain": Object {},
8484
"sass": Object {
85-
"indentedSyntax": true,
85+
"sassOptions": Object {
86+
"indentedSyntax": true,
87+
},
8688
"sourceMap": false,
8789
},
8890
"scss": Object {

packages/config/test/config/__snapshots__/index.test.js.snap

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ Object {
6464
"less": Object {},
6565
"pugPlain": Object {},
6666
"sass": Object {
67-
"indentedSyntax": true,
67+
"sassOptions": Object {
68+
"indentedSyntax": true,
69+
},
6870
},
6971
"scss": Object {},
7072
"stylus": Object {},
@@ -412,7 +414,9 @@ Object {
412414
"less": Object {},
413415
"pugPlain": Object {},
414416
"sass": Object {
415-
"indentedSyntax": true,
417+
"sassOptions": Object {
418+
"indentedSyntax": true,
419+
},
416420
},
417421
"scss": Object {},
418422
"stylus": Object {},

packages/utils/src/cjs.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,14 @@ export function scanRequireTree (id, files = new Set()) {
2929

3030
return files
3131
}
32+
33+
export function tryRequire (id) {
34+
try {
35+
return require(id)
36+
} catch (e) {
37+
}
38+
}
39+
40+
export function getPKG (id) {
41+
return tryRequire(id + '/package.json')
42+
}

packages/webpack/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
"postcss-loader": "^3.0.0",
3636
"postcss-preset-env": "^6.7.0",
3737
"postcss-url": "^8.0.0",
38+
"semver": "^6.3.0",
3839
"std-env": "^2.2.1",
3940
"style-resources-loader": "^1.2.1",
4041
"terser-webpack-plugin": "^2.1.0",

packages/webpack/src/config/base.js

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@ import HardSourcePlugin from 'hard-source-webpack-plugin'
99
import TerserWebpackPlugin from 'terser-webpack-plugin'
1010
import WebpackBar from 'webpackbar'
1111
import env from 'std-env'
12+
import semver from 'semver'
1213

13-
import { isUrl, urlJoin } from '@nuxt/utils'
14+
import { isUrl, urlJoin, getPKG } from '@nuxt/utils'
1415

1516
import PerfLoader from '../utils/perf-loader'
1617
import StyleLoader from '../utils/style-loader'
@@ -51,7 +52,17 @@ export default class WebpackBaseConfig {
5152
}
5253

5354
get loaders () {
54-
return this.buildContext.buildOptions.loaders
55+
if (!this._loaders) {
56+
this._loaders = cloneDeep(this.buildContext.buildOptions.loaders)
57+
// sass-loader<8 support (#6460)
58+
const sassLoaderPKG = getPKG('sass-loader')
59+
if (sassLoaderPKG && semver.lt(sassLoaderPKG.version, '8.0.0')) {
60+
const { sass } = this._loaders
61+
sass.indentedSyntax = sass.sassOptions.indentedSyntax
62+
delete sass.sassOptions.indentedSyntax
63+
}
64+
}
65+
return this._loaders
5566
}
5667

5768
get modulesToTranspile () {
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.sass-style
2+
color: palevioletred

test/fixtures/with-config/nuxt.config.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,10 @@ export default {
9090
})
9191
}
9292
},
93-
css: [{ src: '~/assets/app' }],
93+
css: [
94+
'~/assets/app.pcss',
95+
'~/assets/app.sass'
96+
],
9497
render: {
9598
csp: true,
9699
http2: {

0 commit comments

Comments
 (0)