x)- [x] bug report -> please search issues before submitting
- [ ] feature request
@angular/cli: 1.0.3
node: 7.10.0
os: darwin x64
@angular/common: 4.1.3
@angular/compiler: 4.1.3
@angular/core: 4.1.3
@angular/forms: 4.1.3
@angular/http: 4.1.3
@angular/platform-browser: 4.1.3
@angular/platform-browser-dynamic: 4.1.3
@angular/router: 4.1.3
@angular/cli: 1.0.3
@angular/compiler-cli: 4.1.3
ng new my-app
cd my-app/src/app && mkdir components
cd components
ng g component posts
Those are the only steps I took. I didn't touch the code. I just ran those commands. However, the posts component did not save under the components directory. They were saved in the app directory, even though I was in the components directory when running the generator. I am pretty new to Angular (first day) so I am not sure if that is the expected result or not. I wouldn't imagine that being the case, though.
No logs.
The answer is for both questions. When you are in a specific directory and run ng g component component-name, the generated files should be a child of your current directory via the command line.
Here's a screenshot of the file structure.

@iamclaytonray ng command runs relative to you project location. To generate components to a specific folder you can just do ng g c components/hello which will generate hello component in src\app\components folder.
Ahh, okay. That worked for me. Maybe that could be a future feature? It seems like it would be more logical to be absolute over relative.
@iamclaytonray It is the default behavior as all other commands run based on root ng s, ng b, ng test etc. no matter where in the project path you are.
@sumitarora I don't accept the behaviour you describe is the default behaviour and if it was the default behaviour, it should not be.
I have been using angular cli since somewhere in the beta program. It has never worked this way. CLI always generates the object (component, service, module etc) in the current directory.
It is would be an absolute pain having to write out the path in full every time. Take an example from my current project, to create a new component in the supplier-create directory, given your approach I would have to write
ng g c contract/subcontract/subcontract-edit/subcontract-new/supplier-select/supplier-create/new-component-name.
We have NEVER had to do this.
I have always been able to navigate to the directory (in this case `supplier-create') and type
ng g c new-component-name
I just tried the exact steps described by @iamclaytonray and the result was
create src/app/components/posts/posts.component.css
create src/app/components/posts/posts.component.html
create src/app/components/posts/posts.component.spec.ts
create src/app/components/posts/posts.component.ts
update src/app/app.module.ts
Which is exactly what I would expect and indeed hope for.
@iamclaytonray I hope you have worked out by now that you can indeed to what you expected to do. If not, there is something wrong somewhere.
I didn't think or expect that to be the behavior, especially for Google's codebase but I just dealt with it. Honestly, I didn't entertain Angular after that and moved to React. I could test it out again and see what the results are, if you'd like?
@iamclaytonray - no problems. No need to test it out. I'm quite happy it works. I just didn't want others coming to this answer and think Angular was harder than it was.
This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.
Read more about our automatic conversation locking policy.
_This action has been performed automatically by a bot._
Most helpful comment
@sumitarora I don't accept the behaviour you describe is the default behaviour and if it was the default behaviour, it should not be.
I have been using angular cli since somewhere in the beta program. It has never worked this way. CLI always generates the object (component, service, module etc) in the current directory.
It is would be an absolute pain having to write out the path in full every time. Take an example from my current project, to create a new component in the
supplier-createdirectory, given your approach I would have to writeng g c contract/subcontract/subcontract-edit/subcontract-new/supplier-select/supplier-create/new-component-name.We have NEVER had to do this.
I have always been able to navigate to the directory (in this case `supplier-create') and type
ng g c new-component-nameI just tried the exact steps described by @iamclaytonray and the result was
Which is exactly what I would expect and indeed hope for.
@iamclaytonray I hope you have worked out by now that you can indeed to what you expected to do. If not, there is something wrong somewhere.