without - what is spec.ts file in angular 6




Angular 6+CLI(TypeScript)-How to stop generating.spec.ts test files (3)

I KNOW IT'S KIND OF A BAD PRACTICE, but pair with me:

I'm using Angular-CLI and particularly ng g to generate all of my classes, however, I'm not interested in any test file *.spec.ts and I know that there are two flags (--inline-template,--inline-style) to handle inline CSS and HTML instead of separated files. and for spec the default flag is set to true --spec

So for each run, yes, I can do so ng g c foo --it --is --spec=false

But How to disable the creation of test files globally? is there any default setting for it?

Rashly, I did some stuff like (that didn't work):

ng set spec=false --global

Then tried configuring ts settings file src/tsconfig.json by filling the exclude array.

"exclude": [
    "**/*.spec.ts"
]

For Angular 6 >

Configuration (for e.g. generation of specs) can be done manually or with the Angular CLI.


Manual Angular CLI configuration

Configure manually inside angular.json:

All configurable options per type of file are displayed (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 of generating specs, inline templates, inline styling etc. within angular.json are now persisted inside the [email protected]/angular.<file-type>.<setting>.

Run ng config [email protected]/angular.component.spec false to configure spec for components. This command adds the setting inside the schematics property within the angular.json file (shown below).


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
    }
  }
}




angular2-cli