I ran generate for all available types:
ionic g page foopage
ionic g component foocomponent
ionic g service fooservice
ionic g module foomodule
ionic g class fooclass
ionic g directive foodirective
ionic g guard fooguard
ionic g pipe foopipe
ionic g interface foointerface
ionic g enum fooenum
and ended up with these new files:
src/app/fooclass.spec.ts
src/app/fooclass.ts
src/app/foocomponent/
src/app/foodirective.directive.spec.ts
src/app/foodirective.directive.ts
src/app/fooenum.enum.ts
src/app/fooguard.guard.spec.ts
src/app/fooguard.guard.ts
src/app/foointerface.ts
src/app/foomodule/
src/app/foopage/
src/app/foopipe.pipe.spec.ts
src/app/foopipe.pipe.ts
src/app/fooservice.service.spec.ts
src/app/fooservice.service.ts
So, class, directive, enum, guard, interface, pipe and service all create files that are in the root of src/app while page, component and module al create their own folders.
Why the inconsistency?
Are page/component/module special somehow? If not, would it be better that things get created in a directory structure like src/app/<type>s/<name>/
?