Skip to content

Commit 59709ef

Browse files
authored
feat(plugin-sass): add useOriginalUrlResolver option to disable resolve-url-loader (#4389)
1 parent 4596d65 commit 59709ef

File tree

3 files changed

+34
-12
lines changed

3 files changed

+34
-12
lines changed

packages/plugin-sass/src/index.ts

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -136,24 +136,33 @@ export const pluginSass = (
136136
const clonedOptions = deepmerge<Record<string, any>>({}, options);
137137

138138
if (id === CHAIN_ID.USE.CSS) {
139-
// add resolve-url-loader and sass-loader
140-
clonedOptions.importLoaders += 2;
139+
// add resolve-url-loader
140+
if (!pluginOptions.useOriginalUrlResolver)
141+
clonedOptions.importLoaders += 1;
142+
// add sass-loader
143+
clonedOptions.importLoaders += 1;
141144
}
142145

143146
rule.use(id).loader(loader.get('loader')).options(clonedOptions);
144147
}
145148

149+
// use resolve-url-loader if useOriginalResolver is not set
150+
if (!pluginOptions.useOriginalUrlResolver)
151+
rule
152+
.use(CHAIN_ID.USE.RESOLVE_URL)
153+
.loader(
154+
path.join(__dirname, '../compiled/resolve-url-loader/index.js'),
155+
)
156+
.options({
157+
join: await getResolveUrlJoinFn(),
158+
// 'resolve-url-loader' relies on 'adjust-sourcemap-loader',
159+
// it has performance regression issues in some scenarios,
160+
// so we need to disable the sourceMap option.
161+
sourceMap: false,
162+
})
163+
.end();
164+
146165
rule
147-
.use(CHAIN_ID.USE.RESOLVE_URL)
148-
.loader(path.join(__dirname, '../compiled/resolve-url-loader/index.js'))
149-
.options({
150-
join: await getResolveUrlJoinFn(),
151-
// 'resolve-url-loader' relies on 'adjust-sourcemap-loader',
152-
// it has performance regression issues in some scenarios,
153-
// so we need to disable the sourceMap option.
154-
sourceMap: false,
155-
})
156-
.end()
157166
.use(CHAIN_ID.USE.SASS)
158167
.loader(path.join(__dirname, '../compiled/sass-loader/index.js'))
159168
.options(options);

packages/plugin-sass/src/types.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,9 @@ export type PluginSassOptions = {
5555
* Exclude some `.scss` or `.sass` files, they will not be transformed by sass-loader.
5656
*/
5757
exclude?: Rspack.RuleSetCondition;
58+
59+
/**
60+
* Use original url resolver instead of resolve-url-loader.
61+
*/
62+
useOriginalUrlResolver?: boolean;
5863
};

website/docs/en/plugins/list/plugin-sass.mdx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,14 @@ pluginSass({
115115
});
116116
```
117117

118+
### useOriginalUrlResolver
119+
120+
- **Type:** `boolean`
121+
- **Default:** `undefined`
122+
- **Version:** `>= 1.2.0`
123+
124+
Use the original resolver instead of `resolve-url-loader` when resolving urls
125+
118126
## Practices
119127

120128
### Modify Sass implementation

0 commit comments

Comments
 (0)