Angular 6 + CLI (TypeScript) - How to stop generating .spec.ts test files
For Angular 9 > (version 6 > below)
1) Copy snippet to the root of angular.json
, (configures settings to all projects/globally).
2) Or copy snippet to the root of a specific project (projects.your-project-name
) in angular.json
(configures settings for a specific project).
"schematics": {
"@schematics/angular:component": {
"style": "scss",
"skipTests": true
},
"@schematics/angular:class": {
"skipTests": true
},
"@schematics/angular:directive": {
"skipTests": true
},
"@schematics/angular:pipe": {
"skipTests": true
},
"@schematics/angular:service": {
"skipTests": true
}
},
All configurable options per type of file Schematic Options:
"schematics": {
"@schematics/angular:component": {
"changeDetection": "Default",
"entryComponent": false,
"export": false,
"flat": false,
"inlineStyle": false,
"inlineTemplate": false,
"module": "",
"prefix": "",
"selector": "",
"skipImport": false,
"spec": true,
"style": "css",
"viewEncapsulation": "Emulated",
"skipTests": "false"
},
"@schematics/angular:module": {
"commonModule": true,
"flat": false,
"module": "",
"routing": false,
"routingScope": "Child"
},
"@schematics/angular:service": {
"flat": true,
"skipTests": true
},
"@schematics/angular:pipe": {
"export": false,
"flat": true,
"module": "",
"skipImport": false,
"skipTests": true
},
"@schematics/angular:directive": {
"export": false,
"flat": true,
"module": "",
"prefix": "app",
"selector": "",
"skipImport": false,
"skipTests": true
},
"@schematics/angular:class": {
"skipTests": true
}
},
For Angular 6 >
1) Copy snippet to the root of angular.json
, (configures settings to all projects/globally).
2) Or copy snippet to the root of a specific project (projects.your-project-name
) in angular.json
(configures settings for a specific project).
"schematics": {
"@schematics/angular:component": {
"styleext": "scss",
"spec": false
},
"@schematics/angular:class": {
"spec": false
},
"@schematics/angular:directive": {
"spec": false
},
"@schematics/angular:guard": {
"spec": false
},
"@schematics/angular:module": {
"spec": false
},
"@schematics/angular:pipe": {
"spec": false
},
"@schematics/angular:service": {
"spec": false
}
},
All configurable options per type of file (Schematic Options):
"schematics": {
"@schematics/angular:component": {
"changeDetection": "Default",
"export": false,
"flat": false,
"inlineStyle": false,
"inlineTemplate": false,
"module": "",
"prefix": "",
"selector": "",
"skipImport": false,
"spec": true,
"styleext": "css",
"viewEncapsulation": "Emulated"
},
"@schematics/angular:module": {
"commonModule": true,
"flat": false,
"module": "",
"routing": false,
"routingScope": "Child",
"spec": true
},
"@schematics/angular:service": {
"flat": true,
"spec": true
},
"@schematics/angular:pipe": {
"export": false,
"flat": true,
"module": "",
"skipImport": false,
"spec": true
},
"@schematics/angular:directive": {
"export": false,
"flat": true,
"module": "",
"prefix": "app",
"selector": "",
"skipImport": false,
"spec": true
},
"@schematics/angular:class": {
"spec": true
}
},
Angular CLI configuration with Angular CLI
ERROR:
The ng set defaults.spec.component false
command results in the error: get/set have been deprecated in favor of the config command.
ng set
got changed to ng config
.
Using the Angular CLI (config command usage):
The settings for generating specs, inline templates, inline styling etc. within angular.json
are now persisted inside the schematics.@schematics/angular.<file-type>.<setting>
.
Run ng config schematics.@schematics/angular.component.spec false
to configure spec for components. This command adds the setting inside the schematics property within the angular.json
file.
Angular CLI workspace file (angular.json) on Angular Github
Schematic options inside schema.json
How to do X in Angular CLI v6
If you're using v6 and need to edit your angular.json
You can edit the schematics for your project.
"schematics": {
"@schematics/angular:component": {
"styleext": "scss",
"spec": false
},
"@schematics/angular:class": {
"spec": false
},
"@schematics/angular:directive": {
"spec": false
},
"@schematics/angular:guard": {
"spec": false
},
"@schematics/angular:module": {
"spec": false
},
"@schematics/angular:pipe": {
"spec": false
},
"@schematics/angular:service": {
"spec": false
}
},
You can run this command to disable spec file generation for a specific type of file:
ng set defaults.spec.FILETYPE false
For example:
ng set defaults.spec.component false // Won't generate spec files for .component files
Alternately you can just disable all spec file generation from the angular-cli.json file.
{
...
"defaults": {
"spec": {
"class": false,
"component": false,
"directive": false,
"module": false,
"pipe": false,
"service": false
}
}
}