fix(ngcc): correctly identify relative Windows-style import paths (#36372)
Previously, `isRelativePath()` assumed paths are *nix-style. This caused Windows-style paths (such as `C:\foo\some-package\some-file.js`) to not be recognized as "relative" imports. This commit fixes this by using the OS-agnostic `isRooted()` helper and also accounting for both styles of path delimiters: `/` and `\` PR Close #36372
This commit is contained in:

committed by
Kara Erickson

parent
ffa4e11db1
commit
0daa48800e
@ -7,7 +7,7 @@
|
||||
*/
|
||||
export {CachedFileSystem} from './src/cached_file_system';
|
||||
export {NgtscCompilerHost} from './src/compiler_host';
|
||||
export {absoluteFrom, absoluteFromSourceFile, basename, dirname, getFileSystem, isRoot, join, relative, relativeFrom, resolve, setFileSystem} from './src/helpers';
|
||||
export {absoluteFrom, absoluteFromSourceFile, basename, dirname, getFileSystem, isRoot, isRooted, join, relative, relativeFrom, resolve, setFileSystem} from './src/helpers';
|
||||
export {LogicalFileSystem, LogicalProjectPath} from './src/logical';
|
||||
export {NodeJSFileSystem} from './src/node_js_file_system';
|
||||
export {AbsoluteFsPath, FileStats, FileSystem, PathSegment, PathString} from './src/types';
|
||||
|
@ -37,8 +37,8 @@ export function absoluteFromSourceFile(sf: ts.SourceFile): AbsoluteFsPath {
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert the path `path` to a `PathSegment`, throwing an error if it's not a relative path.
|
||||
*/
|
||||
* Convert the path `path` to a `PathSegment`, throwing an error if it's not a relative path.
|
||||
*/
|
||||
export function relativeFrom(path: string): PathSegment {
|
||||
const normalized = normalizeSeparators(path);
|
||||
if (fs.isRooted(normalized)) {
|
||||
@ -73,6 +73,13 @@ export function isRoot(path: AbsoluteFsPath): boolean {
|
||||
return fs.isRoot(path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Static access to `isRooted`.
|
||||
*/
|
||||
export function isRooted(path: string): boolean {
|
||||
return fs.isRooted(path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Static access to `relative`.
|
||||
*/
|
||||
|
Reference in New Issue
Block a user