Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to generate your classes in a specific folder with Angula2 CLI?

I usually generate classes with the angular 2 cli with the following command:

ng g class todo

How can I tell the cli to generate the classes in a particular folder, for example a models folder.

The documentation has an example where they generate a component in a specific folder but I've had no success with the class option

I've tried the following options:

ng g class models/todo

ng g class ../models todo

ng g class models todo

They result in either an error that the path is invalid, which makes me think that the option is supported but I can't figure it out or in the case of the latter merges the intended folder name with the class name.

like image 983
George Bora Avatar asked Oct 25 '16 13:10

George Bora


People also ask

Does Ng generate component create folder?

We can use ng generate component command to create component in sub-directory or specific folder.


2 Answers

Generated items for the Angular CLI are relative...

if you are in the root dir (or the source dir) you are perceived to be in the app dir...

~/me/foo > ng g c bar // ~/me/foo/src/app/bar/bar.component*  ~/me/foo/src > ng g c bar // ~/me/foo/src/app/bar/bar.component* 

if you are in the app directory or further down the folder structure you will generate to where you are...

~/me/foo/src/app/feature > ng g c bar // ~/me/foo/src/app/feature/bar/bar.component*  ~/me/foo/src/app/feature > ng g c ../bar // ~/me/foo/src/app/bar/bar.component* 

Note: if you try to generate into a dir that does not exist, it will error...

~/me/foo/src/app > ng g c a/b/c/d/e/f/g/bar // Error 
like image 189
Brocco Avatar answered Sep 22 '22 05:09

Brocco


To create a todo component inside the models folder in your project, just make sure you are in the project's root folder and type:

ng g c /models/todo

Also, if you want to specify a the declaring module's file name, you can use the -m option.

For example, if you have a models module, and want to update that module for declare your new todo's component:

ng g c /models/todo -m model

Regards

like image 32
Ivan Maia Avatar answered Sep 23 '22 05:09

Ivan Maia