-
Notifications
You must be signed in to change notification settings - Fork 12k
Specify multiple default collections #12157
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
From @tomastrajan on December 2, 2017 7:37 Hey guys! I was able to implement this in Still have to look into tests though. Also it is possible that you might have had plan for other solution so please let me know. Also check following screens for the new behavior. Display help for Display detailed help for particular schematics (first matching schematics / collection pair wins so the order in schematics property in Generate items using schematics from different collections (again, first matching schematics / collection pair wins so the order in schematics property in |
From @tomastrajan on December 2, 2017 13:57 There is now open PR with initial working implementation of this feature on Cheers 🍺 |
From @myspivey on January 31, 2018 15:40 Would like this as well. |
From @Hotell on March 17, 2018 18:1 any update on this? this is totally needed for great DX. Enforcing users to write thx |
From @tomastrajan on March 17, 2018 19:46 From what I have seen in That way you don't have to delegate every schematic manualy, provide default ones out of the box and add custom on top of that. Thr big downside is that this leads to ONE custom collection set as a new default for This unfortunatelly doesn't support "multiple small focused collections from different authors" use case. 😞 |
From @Hotell on March 17, 2018 20:49 Yeah I know, but this is to restrictive and repetitive and hard to maintain overall. Maybe, just guys, can you please give some statement or so, why @tomastrajan PR wasn't accepted yet or what are the plans ? I know we are all super busy, but would appreciate some response. thank you 🖖 |
From @clydin on March 20, 2018 18:57 Schematic collection extension supports 1 or more schematics with the last taking precedence. The currently envisioned concept is for a custom collection to be placed within the project and that collection to extend from any other schematic collections with the option to directly define other custom schematics if desired. As the schematic extension logic is fully implemented within the core of the schematics system, having similar but repeated logic within the CLI itself represents a maintenance and supportability concern. |
From @clydin on March 20, 2018 19:6 For reference, the collection extension PR: angular/devkit#398 |
From @james-schwartzkopf on March 23, 2018 16:29 I think I like that idea long term, at least assuming there will be an easy command for the user to run to add a schematic collection without needing to know the details of collection.json (maybe handled by ng add my-schematic?). Short term I dislike that every project is adding I know no one likes to give timelines, but I can't help but ask, any idea on a timeline for this (custom collection in the project)? Is it planned for any release yet? Any issue to track? |
From @hansl on March 23, 2018 19:12
You can already do that. |
From @james-schwartzkopf on March 23, 2018 19:24 Yeah, but there's none there by default in a project created by ng new. So everyone's adding |
It's been a year since the last comment. |
I don't believe so. It could certainly use some 👍 on the first post to help it get some attention. |
I also faced it. For me, would be great to use |
It definitely would be great for working with different sets of schematics ! |
Yep, it would be especially useful for mobile dev. I also have to switch between @ngrx/schematics and @nativescript/schematics |
The `schematicCollections` can be placed under the `cli` option in the global `.angular.json` configuration, at the root or at project level in `angular.json` . ```jsonc { "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, "cli": { "schematicCollections": ["@schematics/angular", "@angular/material"] } // ... } ``` **Rationale** When this option is not configured and a user would like to run a schematic which is not part of `@schematics/angular`, the collection name needs to be provided to `ng generate` command in the form of `[collection-name:schematic-name]`. This make the `ng generate` command too verbose for repeated usages. This is where `schematicCollections` comes handle. When adding `@angular/material` to the list of `schematicCollections`, the generate command will try to locate the schematic in the specified collections. ``` ng generate navigation ``` is equivalent to: ``` ng generate @angular/material:navigation ``` **Conflicting schematic names** When multiple collections have a schematic with the same name. Both `ng generate` and `ng new` will run the first schematic matched based on the ordering (as specified) of `schematicCollections`. DEPRECATED: The `defaultCollection` workspace option has been deprecated in favor of `schematicCollections`. Before ```json "defaultCollection": "@angular/material" ``` After ```json "schematicCollections": ["@angular/material"] ``` Closes #12157
This issue has been automatically locked due to inactivity. Read more about our automatic conversation locking policy. This action has been performed automatically by a bot. |
From @jeffbcross on October 31, 2017 22:4
Bug Report or Feature Request (mark with an
x
)Area
Desired functionality
It'd be nice to have multiple collections configured in my CLI project instead of a single default collection. I.e. I'd like to have a project that gives preference to
nrwl/schematics
but will fall back toangular/schematics
if I try to generate something not provided bynrwl/schematics
. This would make it easier to publish many focused schematics without requiring the user to specify the collection each time they're generating something new. My naive suggestion is to change the.angular-cli.json
schema from a singlecollection
value to a cascading array ofcollections
like so:Then when calling
ng generate
, schematics would use the first collection that provides a matching schematic.This issue seems cross-cutting between CLI and Schematics, so I thought this repository was the most appropriate place to open it, but lmk if I should open it on angular/angular-cli.
(This may seem similar to #34, but it's more focused on end user experience than schematics author experience).
Copied from original issue: angular/devkit#249
The text was updated successfully, but these errors were encountered: