Reputation:
I am using Angular 4 with Angular CLI and I am able to create a new component with the following command.
E:\HiddenWords>ng generate component plainsight
But I need to generate a child component inside plainsight. Is there a way to do it with Angular CLI?
Upvotes: 405
Views: 664622
Reputation: 117
I know that you want to make a child component inside of an existing one, but that is no different to any other cli, like many others already commented.
(ng g component <folder_name>/<component_name>
)
Now to the question that got me here: "How to generate components in a specific folder with Angular CLI?"
I would define the generate location of components in the angular.json configuration, so that you do not have to remember anything and can not make grammer mistakes or spelling errors. This also speeds things up, because you do not have to repeat yourself over and over again.
I hope this helps someone, because I thought I would find out, how to do this, under this post and didn't find the solution in the docs.
This is what you have to add in projects.<project_name>.schematics:
{
"@schematics/angular:component": {
"path": "src/app/components",
"style": "css"
},
"@schematics/angular:service": {
"path": "src/app/services"
},
"@schematics/angular:interface": {
"path": "src/app/types"
},
"@schematics/angular:enum": {
"path": "src/app/types"
}
...
}
Upvotes: 0
Reputation: 28909
There are couple of methods to create component in a specific directory.
i.e. You want to create a component in a app/common
folder as shown in the image given below, then follow these steps
Open in Integrated Terminal
or Open in Command Prompt
.ng g c my-component
Also you can check this process through this image
Copy Relative Path
cd
, press space and then ctrl + v to paste the copied path and hit EnterAlso you can check this process through this image
i.e. You want to create component
in some folder, you type the whole command including path and component name.
ng g c relative-path/my-component
Also you can check this process through this image
Note (method-3): angular will not allow you to create component outside app folder so for component, your base path will be app
folder that's why in my case I had to start with auth/a-component
instead of src/app/auth/a-component
Upvotes: 177
Reputation: 31
Open a terminal window and navigate to the root of your Angular project. create a folder
Run the following command to generate a new component in a specific folder:
ng generate component <folderName>/<componentName>
For example, if you want to create a new component called "myComponent" in a folder called "components", the command would be:
ng generate component components/myComponent
Upvotes: 3
Reputation: 304
Once you are in the directory of your project.
use cd path/to/directory
then use ng g c component_name
it automates everything and is error free
the g c
means generate component
Upvotes: 1
Reputation: 18762
Say you want to create a component Container
in a module Box
, and module is already created and is present in it its own folder src/app/box
.
You can do this - when asked for component name, provide path to component and component name.
ng g c -m box
? What name would you like to use for the component? box/Container
CREATE src/app/box/container/container.component.scss (0 bytes)
CREATE src/app/box/container/container.component.html (24 bytes)
CREATE src/app/box/container/container.component.spec.ts (647 bytes)
CREATE src/app/box/container/container.component.ts (288 bytes)
UPDATE src/app/box/box.module.ts (286 bytes)
Upvotes: 0
Reputation: 142
Open the specific folder Terminal use this command
ng g c component name --flat
Upvotes: 2
Reputation: 19173
If you want to further speed up this usual process and avoid common mistakes which cost you time you can try with visual studio code plugins.
For example I use Angular-Schematics and I avoid the terminal. You can invoke the ng cli with your mouse selections.
Upvotes: 5
Reputation: 4564
It Super Easy,
Other way,
in terminal go your FOLDER,
**xxx\FOLDER_NAME>cd FOLDER_NAME
xxx\FOLDER_NAME> ng generate component plainsight
Bonus point if you lasy like me to copy path(Visual studio code),
Upvotes: 10
Reputation: 636
To open a terminal in VS code just type CTRL
+ ~
which will open the terminal. Here are the steps:
Check for the particular component where you need to generate the new component.
Redirect the path to the particular folder/component where you need to generate another component
FOR EXAMPLE: cd src/app/particularComponent
In the place of particularComponent, type the component name in which you need to generate the new component.
ng g c NewComponentName
(Change the name NewComponentName to your required component name.)
Upvotes: 5
Reputation: 821
Create a component inside a specific folder:
ng g c folder-name/component-name
Create a component inside a folder for a specific (existing) module with Angular-CLI:
ng g c folder-name/component-name --module=folder-name/moduleName.module.ts
Upvotes: 7
Reputation: 1316
Need for using --dryRun when using custom directory
You can pass your custom directory path along with ng
command.
ng g c myfolder\mycomponent
But there are chances that you miss spell the path and either new folder gets created or target directory changes. For this reason dryRun
is very helpful. It displays an output of how the changes is going to be affected.
After verifying the result you can run the same command without -d
to make the changes.
--dryRun=true|false
When true, runs through and reports activity without writing out results.
Default: false
Aliases: -d
Official Doc :- https://angular.io/cli/generate
Upvotes: 3
Reputation: 914
The above options were not working for me because unlike creating a directory or file in the terminal, when the CLI generates a component, it adds the path src/app by default to the path you enter.
If I generate the component from my main app folder like so (WRONG WAY)
ng g c ./src/app/child/grandchild
the component that was generated was this:
src/app/src/app/child/grandchild.component.ts
so I only had to type
ng g c child/grandchild
Hopefully this helps someone
Upvotes: 15
Reputation: 6529
If you use VSCode, consider using the Angular Console
It provides an interface for the Angular CLI. You will see an option to specify the path.
The Angular CLI is immensely powerful and extensible. In fact, there are so many capabilities that it is helpful for developers to have all of the different configuration options for every command available to them.
With Angular Console, you’ll get recommendations and be able to pull up even the most easily forgotten or rarely used features!
Angular Console is, first and foremost, a more productive way to work with what the Angular CLI provides.
Upvotes: 0
Reputation: 161
ng g c componentname
By using above command New Component will be created in a folder with
(componentname) you specified above.
Upvotes: 0
Reputation: 383
Angular CLI provides all the commands you need in your app development. For your specific requirement, you can easily use ng g
(ng generate
) to get the work done.
ng g c directory/component-name
will generate component-name
component in the directory
folder.
Following is a map of a few simple commands you can use in your application.
ng g c comp-name
or ng generate component comp-name
to create a component with the name 'comp-name'ng g s serv-name
or ng generate service serv-name
to create a service with the name 'serv-name'ng g m mod-name
or ng generate module mod-name
to create a module with the name 'mod-name'ng g m mod-name --routing
or ng generate module mod-name --routing
to create a module with the name 'mod-name' with angular routingHope this helps!
Good Luck!
Upvotes: 3
Reputation: 199
Go to project folder in command prompt or in Project Terminal.
Run cmd : ng g c componentname
Upvotes: 1
Reputation: 385
I wasn't having any luck with the above answers (including --flat
), but what worked for me was:
cd path/to/specific/directory
From there, I ran the ng g c mynewcomponent
Upvotes: 5
Reputation: 11
Try to use
ng g component plainsight/some-name.component.ts
Or try it manually, if you feel more comfortable.
Upvotes: 1
Reputation: 3143
Simple
ng g component plainsight/some-name
It will create "plainsight" folder and generate some-name component inside it.
Upvotes: 1
Reputation: 8470
ng g c component-name
For specify custom location: ng g c specific-folder/component-name
here component-name
will be created inside specific-folder.
Similarl approach can be used for generating other components like directive
, pipe
, service
, class
, guard
, interface
, enum
, module
, etc.
Upvotes: 37
Reputation: 3079
The ng g component plainsight/some-name
makes a new directory when we use it.
The final output will be:
plainsight/some-name/some-name.component.ts
To avoid that, make use of the flat option ng g component plainsight/some-name --flat
and it will generate the files without making a new folder
plainsight/some-name.component.ts
Upvotes: 307
Reputation: 261
more shorter code to generate component: ng g c component-name
to specify its location: ng g c specific-folder/component-name
Additional info
more shorter code to generate directive: ng g d directive-name
to specify its location: ng g d specific-folder/directive-name
Upvotes: 20