When working out the dependencies between entry-points ngcc must parse the import statements and then resolve the import path to the actual file. This is complicated because module resolution is not trivial. Previously ngcc used the node.js `require.resolve`, with some hacking to resolve modules. This change refactors the `DependencyHost` to use a new custom `ModuleResolver`, which is optimized for this use case. Moreover, because we are in full control of the resolution, we can support TS `paths` aliases, where not all imports come from `node_modules`. This is the case in some CLI projects where there are compiled libraries that are stored locally in a `dist` folder. See //FW-1210. PR Close #29643
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright Google Inc. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
* found in the LICENSE file at https://angular.io/license
|
|
*/
|
|
|
|
import {isRelativePath} from '../src/utils';
|
|
|
|
describe('isRelativePath()', () => {
|
|
it('should return true for relative paths', () => {
|
|
expect(isRelativePath('.')).toBe(true);
|
|
expect(isRelativePath('..')).toBe(true);
|
|
expect(isRelativePath('./')).toBe(true);
|
|
expect(isRelativePath('../')).toBe(true);
|
|
expect(isRelativePath('./abc/xyz')).toBe(true);
|
|
expect(isRelativePath('../abc/xyz')).toBe(true);
|
|
});
|
|
|
|
it('should return true for absolute paths', () => {
|
|
expect(isRelativePath('/')).toBe(true);
|
|
expect(isRelativePath('/abc/xyz')).toBe(true);
|
|
});
|
|
|
|
it('should return false for other paths', () => {
|
|
expect(isRelativePath('abc')).toBe(false);
|
|
expect(isRelativePath('abc/xyz')).toBe(false);
|
|
expect(isRelativePath('.abc')).toBe(false);
|
|
expect(isRelativePath('..abc')).toBe(false);
|
|
expect(isRelativePath('@abc')).toBe(false);
|
|
expect(isRelativePath('.abc/xyz')).toBe(false);
|
|
expect(isRelativePath('..abc/xyz')).toBe(false);
|
|
expect(isRelativePath('@abc/xyz')).toBe(false);
|
|
});
|
|
});
|