Skip to content

[CLI][Schematics] Override Angular Schematics issue - Collection "D" cannot be resolved. - Windows #29559

Closed
@sek1973

Description

@sek1973

Command

generate

Is this a regression?

  • Yes, this behavior used to work in the previous version

The previous version in which this bug was not present was

No response

Description

If you try to override standard Angular Schematics with a custom one by the use of schematicCollections option in angular.json file like for instance:

"cli": { "analytics": false, "schematicCollections": [ "./schematics", "@schematics/angular" ] }

And create your custom schematics (index.ts):

`import {
externalSchematic,
Rule,
SchematicContext,
Tree
} from '@angular-devkit/schematics';
import { Schema as ComponentOptions } from '@schematics/angular/component/schema';

export function generateComponent(options: ComponentOptions): Rule {
console.log('Custom schematics for generate component triggered...');
return (_tree: Tree, _context: SchematicContext) => {
return externalSchematic(
"@schematics/angular",
"component",
options
);
};
}`

It will end up with an error message like this one:

Collection "D" cannot be resolved.

Where D refers to the drive letter of the project folder location.

Minimal Reproduction

Please use the attached repo to reproduce the issue:
schematics-test.zip

Run npm install and then try to generate a component using:
ng g c
command.

Exception or Error


Your Environment

Angular CLI: 19.1.5
Node: 22.13.0
Package Manager: npm 8.6.0
OS: win32 x64

Angular: 19.1.4
... animations, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, router

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1901.5
@angular-devkit/build-angular   19.1.5
@angular-devkit/core            19.1.5
@angular-devkit/schematics      19.1.5
@angular/cli                    19.1.5
@schematics/angular             19.1.5
rxjs                            7.8.1
typescript                      5.7.3
zone.js                         0.15.0

Anything else relevant?

The error is caused by parseSchematicInfo method defined in SchematicsCommandModule in file:
@angular\cli\src\command-builder\schematics-command-module.js
Modifying the function as follows:
parseSchematicInfo(schematic) { if (schematic?.includes(':')) { const segments = schematic.split(':'); const [collectionName, schematicName] = [segments.slice(0, -1).join(':'), segments.at(-1)]; return [collectionName, schematicName]; } return [undefined, schematic]; }
Seems to fix the problem.

The issue is also present in v18.

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions