fix(js): locate npm nodes correctly for aliased packages (#27124)
This commit is contained in:
parent
0f193e21ce
commit
40d3516020
@ -96,6 +96,14 @@ describe('TargetProjectLocator', () => {
|
|||||||
name: '@proj/proj123-base',
|
name: '@proj/proj123-base',
|
||||||
version: '1.0.0',
|
version: '1.0.0',
|
||||||
}),
|
}),
|
||||||
|
'./node_modules/lodash/package.json': JSON.stringify({
|
||||||
|
name: 'lodash',
|
||||||
|
version: '3.0.0',
|
||||||
|
}),
|
||||||
|
'./node_modules/lodash-4/package.json': JSON.stringify({
|
||||||
|
name: 'lodash',
|
||||||
|
version: '4.0.0',
|
||||||
|
}),
|
||||||
};
|
};
|
||||||
vol.fromJSON(fsJson, '/root');
|
vol.fromJSON(fsJson, '/root');
|
||||||
projects = {
|
projects = {
|
||||||
@ -263,6 +271,22 @@ describe('TargetProjectLocator', () => {
|
|||||||
packageName: '@proj/proj123-base',
|
packageName: '@proj/proj123-base',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
'npm:lodash': {
|
||||||
|
name: 'npm:lodash',
|
||||||
|
type: 'npm',
|
||||||
|
data: {
|
||||||
|
version: '3.0.0',
|
||||||
|
packageName: 'lodash',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'npm:lodash-4': {
|
||||||
|
name: 'npm:lodash-4',
|
||||||
|
type: 'npm',
|
||||||
|
data: {
|
||||||
|
packageName: 'lodash-4',
|
||||||
|
version: 'npm:lodash@4.0.0',
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
targetProjectLocator = new TargetProjectLocator(projects, npmProjects);
|
targetProjectLocator = new TargetProjectLocator(projects, npmProjects);
|
||||||
@ -454,6 +478,20 @@ describe('TargetProjectLocator', () => {
|
|||||||
);
|
);
|
||||||
expect(proj5).toEqual('proj5');
|
expect(proj5).toEqual('proj5');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should be able to resolve packages alises', () => {
|
||||||
|
const lodash = targetProjectLocator.findProjectFromImport(
|
||||||
|
'lodash',
|
||||||
|
'libs/proj/index.ts'
|
||||||
|
);
|
||||||
|
expect(lodash).toEqual('npm:lodash');
|
||||||
|
|
||||||
|
const lodash4 = targetProjectLocator.findProjectFromImport(
|
||||||
|
'lodash-4',
|
||||||
|
'libs/proj/index.ts'
|
||||||
|
);
|
||||||
|
expect(lodash4).toEqual('npm:lodash-4');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('findTargetProjectWithImport (without tsconfig.json)', () => {
|
describe('findTargetProjectWithImport (without tsconfig.json)', () => {
|
||||||
|
|||||||
@ -188,10 +188,15 @@ export class TargetProjectLocator {
|
|||||||
|
|
||||||
const version = clean(externalPackageJson.version);
|
const version = clean(externalPackageJson.version);
|
||||||
const npmProjectKey = `npm:${externalPackageJson.name}@${version}`;
|
const npmProjectKey = `npm:${externalPackageJson.name}@${version}`;
|
||||||
const matchingExternalNode = this.npmProjects[npmProjectKey];
|
let matchingExternalNode = this.npmProjects[npmProjectKey];
|
||||||
|
if (!matchingExternalNode) {
|
||||||
|
// check if it's a package alias, where the resolved package key is used as the version
|
||||||
|
const aliasNpmProjectKey = `npm:${packageName}@${npmProjectKey}`;
|
||||||
|
matchingExternalNode = this.npmProjects[aliasNpmProjectKey];
|
||||||
if (!matchingExternalNode) {
|
if (!matchingExternalNode) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.npmResolutionCache.set(
|
this.npmResolutionCache.set(
|
||||||
npmImportForProject,
|
npmImportForProject,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user