Skip to content

Commit bc0fe1b

Browse files
authored
Fix resolution of relative external files outside target directory (#5099)
Fix relative external resolution
1 parent 7a2bafb commit bc0fe1b

12 files changed

Lines changed: 81 additions & 0 deletions

File tree

src/utils/relativeId.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ export function getImportPath(
2626
stripJsExtension: boolean,
2727
ensureFileName: boolean
2828
): string {
29+
while (targetPath.startsWith('../')) {
30+
targetPath = targetPath.slice(3);
31+
importerId = '_/' + importerId;
32+
}
2933
let relativePath = normalize(relative(dirname(importerId), targetPath));
3034
if (stripJsExtension && relativePath.endsWith('.js')) {
3135
relativePath = relativePath.slice(0, -3);
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module.exports = defineTest({
2+
description: 'allows relative external dependencies outside of output dir',
3+
options: {
4+
input: { main: 'main.js', 'nested/main': 'nested/main.js' },
5+
external(id) {
6+
return id.startsWith('../');
7+
}
8+
}
9+
});
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
define(['../first', '../../second'], (function (first_js, second_js) { 'use strict';
2+
3+
console.log(first_js.first, second_js.second);
4+
5+
}));
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
define(['../../first', '../../../second'], (function (first_js, second_js) { 'use strict';
2+
3+
console.log(first_js.first, second_js.second);
4+
5+
}));
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
'use strict';
2+
3+
var first_js = require('../first.js');
4+
var second_js = require('../../second.js');
5+
6+
console.log(first_js.first, second_js.second);
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
'use strict';
2+
3+
var first_js = require('../../first.js');
4+
var second_js = require('../../../second.js');
5+
6+
console.log(first_js.first, second_js.second);
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { first } from '../first.js';
2+
import { second } from '../../second.js';
3+
4+
console.log(first, second);
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { first } from '../../first.js';
2+
import { second } from '../../../second.js';
3+
4+
console.log(first, second);
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
System.register(['../first.js', '../../second.js'], (function () {
2+
'use strict';
3+
var first, second;
4+
return {
5+
setters: [function (module) {
6+
first = module.first;
7+
}, function (module) {
8+
second = module.second;
9+
}],
10+
execute: (function () {
11+
12+
console.log(first, second);
13+
14+
})
15+
};
16+
}));
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
System.register(['../../first.js', '../../../second.js'], (function () {
2+
'use strict';
3+
var first, second;
4+
return {
5+
setters: [function (module) {
6+
first = module.first;
7+
}, function (module) {
8+
second = module.second;
9+
}],
10+
execute: (function () {
11+
12+
console.log(first, second);
13+
14+
})
15+
};
16+
}));

0 commit comments

Comments
 (0)