Skip to content

Commit 3d4172c

Browse files
authored
[fix] support using arrays for kit.vite.resolve.alias (#2328)
1 parent da4c17b commit 3d4172c

File tree

4 files changed

+55
-17
lines changed

4 files changed

+55
-17
lines changed

.changeset/sour-waves-return.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/kit': patch
3+
---
4+
5+
support using arrays for kit.vite.resolve.alias

packages/kit/src/core/config/index.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,12 @@ function merge_into(a, b, conflicts = [], path = []) {
170170
const is_plain_object = (x) => typeof x === 'object' && x.constructor === Object;
171171

172172
for (const prop in b) {
173+
// normalize alias objects to array
174+
if (prop === 'alias' && path[path.length - 1] === 'resolve') {
175+
if (a[prop]) a[prop] = normalize_alias(a[prop]);
176+
if (b[prop]) b[prop] = normalize_alias(b[prop]);
177+
}
178+
173179
if (is_plain_object(b[prop])) {
174180
if (!is_plain_object(a[prop])) {
175181
if (a[prop] !== undefined) {
@@ -233,3 +239,17 @@ export function print_config_conflicts(conflicts, pathPrefix = '', scope) {
233239
);
234240
});
235241
}
242+
243+
/**
244+
* normalize kit.vite.resolve.alias as an array
245+
* @param {import('vite').AliasOptions} o
246+
* @returns {import('vite').Alias[]}
247+
*/
248+
export function normalize_alias(o) {
249+
return Array.isArray(o)
250+
? o
251+
: Object.entries(o).map(([find, replacement]) => ({
252+
find,
253+
replacement
254+
}));
255+
}

packages/kit/src/core/config/index.spec.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -501,4 +501,30 @@ deepMergeSuite('merge including toString', () => {
501501
assert.equal(Object.keys(merged), ['toString', 'constructor', 'y']);
502502
});
503503

504+
deepMergeSuite('merge resolve.alias', () => {
505+
const [merged, conflicts] = deep_merge(
506+
{
507+
resolve: {
508+
alias: [{ find: /foo/, replacement: 'bar' }]
509+
}
510+
},
511+
{
512+
resolve: {
513+
alias: {
514+
alpha: 'beta'
515+
}
516+
}
517+
}
518+
);
519+
assert.equal(conflicts.length, 0);
520+
assert.equal(merged, {
521+
resolve: {
522+
alias: [
523+
{ find: /foo/, replacement: 'bar' },
524+
{ find: 'alpha', replacement: 'beta' }
525+
]
526+
}
527+
});
528+
});
529+
504530
deepMergeSuite.run();

packages/kit/src/core/dev/index.js

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,6 @@ class Watcher extends EventEmitter {
107107

108108
this.server = await get_server(this.https, vite_config, (req, res) => handler(req, res));
109109

110-
const alias = vite_config.resolve && vite_config.resolve.alias;
111-
112110
// don't warn on overriding defaults
113111
const [modified_vite_config] = deep_merge(default_config, vite_config);
114112

@@ -119,21 +117,10 @@ class Watcher extends EventEmitter {
119117
configFile: false,
120118
root: this.cwd,
121119
resolve: {
122-
alias: Array.isArray(alias)
123-
? [
124-
{
125-
find: '$app',
126-
replacement: path.resolve(`${this.dir}/runtime/app`)
127-
},
128-
{
129-
find: '$lib',
130-
replacement: this.config.kit.files.lib
131-
}
132-
]
133-
: {
134-
$app: path.resolve(`${this.dir}/runtime/app`),
135-
$lib: this.config.kit.files.lib
136-
}
120+
alias: {
121+
$app: path.resolve(`${this.dir}/runtime/app`),
122+
$lib: this.config.kit.files.lib
123+
}
137124
},
138125
build: {
139126
rollupOptions: {

0 commit comments

Comments
 (0)