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

后端 未结 11 862
一向
一向 2020-12-13 05:52

I know it\'s kind of a bad practice, but bear with me:

I\'m using Angular-CLI, particularly ng g to generate all of my classes. However

相关标签:
11条回答
  • 2020-12-13 06:05

    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

    0 讨论(0)
  • 2020-12-13 06:14

    For angular 8+:

    Option "spec" is deprecated: Use "skipTests" instead, so if you want to create a new component use:

    ng g c my-new-component --skipTests=true
    
    0 讨论(0)
  • 2020-12-13 06:15

    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
        }
      },
    
    0 讨论(0)
  • 2020-12-13 06:18

    Just to update Sabbir Rahman's answer:

    In version 1.0.2 of the CLI you will have to set the spec file to false for each individual type. An example is included below:

    "defaults": {
        "styleExt": "scss",
        "component": {
          "spec": false
        },
        "service": {
          "spec": false
        },
        "directive": {
          "spec": false
        },
        "class": {
          "spec": false // Set to false by default
        },
        "module": {
          "spec": false // Set to false by default
        },
        "pipe": {
          "spec": false
        }
      }
    
    0 讨论(0)
  • 2020-12-13 06:19

    Just Run this command: ng config schematics.@schematics/angular.component.spec false

    0 讨论(0)
  • 2020-12-13 06:22

    For Angular 9+:

    The Angular.json config has changed slightly which is causing previous configuration schemas to change, per this GitHub issue on Angular/CLI.

    Adapted from @sacgrover's comment along with my own:

    Old way

    "@schematics/angular:component": {
        // true => DO generate spec files, false => DON'T generate them
        "spec": true,
        "styleext": "scss"
    }
    

    New way:

    "@schematics/angular:component": {
        // true => DON'T generate spec files, false => DO generate them
        "skipTests": true,
        "style": "scss"
    }
    

    Additional Reference => Angular Docs for CLI Generate Command

    0 讨论(0)
提交回复
热议问题