Angular 6 + CLI(TypeScript) - 如何停止生成.spec.ts测试文件

Moh*_*ara 35 typescript angular-cli angular2-cli angular

我知道这是一种糟糕的做法,但与我配对:

我正在使用Angular-CLI,特别ng g是生成我的所有类,但是,我对任何测试文件都不感兴趣*.spec.ts,我知道有两个标志(--inline-template,--inline-style)来处理内联CSS和HTML而不是分离文件.对于spec,默认标志设置为true--spec

所以对于每次运行,是的,我可以这样做 ng g c foo --it --is --spec=false

但是如何全局禁用测试文件的创建?它有默认设置吗?

拉什利,我做了一些像(不起作用)的东西:

ng set spec=false --global

然后尝试src/tsconfig.json通过填充exclude数组来配置ts设置文件.

"exclude": [
    "**/*.spec.ts"
]
Run Code Online (Sandbox Code Playgroud)

Bra*_*age 48

对于Angular 6>

配置(例如生成规范)可以手动完成或使用Angular CLI完成.


手动Angular CLI配置

手动配置内部angular.json:

显示每种类型文件的所有可配置选项(原理图选项).

"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
  }
},
Run Code Online (Sandbox Code Playgroud)

使用Angular CLI进行角度CLI配置

错误:

projects.your-project-name命令导致错误:angular.json

ng set defaults.spec.component false.

使用Angular CLI(config命令用法):

生成规格,内联模板,内联样式等的get/set have been deprecated in favor of the config command.设置现在在内部保留ng set got changed to ng config.

运行angular.json以配置组件的规范.此命令在schematics.@schematics/angular.<file-type>.<setting>文件中的schematics属性中添加设置(如下所示).


Angular Github上的Angular CLI工作区文件(angular.json)

schema.json中的原理图选项

如何在Angular CLI v6中执行X.


Pau*_*ory 26

如果您正在使用v6并需要编辑angular.json

您可以编辑项目的原理图.

"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
    }
  },
Run Code Online (Sandbox Code Playgroud)


Sab*_*man 24

您可以运行此命令来禁用特定类型文件的spec文件生成:

ng set defaults.spec.FILETYPE false

例如:

ng set defaults.spec.component false // Won't generate spec files for .component files

或者,您可以从angular-cli.json文件中禁用所有规范文件生成.

{
  ...
  "defaults": {
    "spec": {
      "class": false,
      "component": false,
      "directive": false,
      "module": false,
      "pipe": false,
      "service": false
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

  • get/set已被弃用,转而使用config命令 (3认同)
  • “angular-cli.json”已被弃用,取而代之的是“angular.json”。并且 angular.json 中没有“defaults”键,所以我担心这个答案已经过时了。 (2认同)

小智 13

只是为了更新Sabbir Rahman的答案:

在CLI的1.0.2版中,您必须为每个单独的类型将spec文件设置为false.下面是一个例子:

"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
    }
  }
Run Code Online (Sandbox Code Playgroud)


小智 10

您可以添加--skipTests=true|false如果为 true 则不会生成任何spec.ts

例子 : ng g component componentName --skipTests=true

此行不会生成任何spec.ts文件

编辑:

注意:从 angular 7 开始,此命令不起作用,即使在 angular 的官方网站上提到了此命令。在这里:https : //angular.io/cli/generate#component

  • 尝试使用 Angular 9 并成功。我更喜欢这种方式,而不是通过 json 禁用所有规范文件。 (2认同)

KMJ*_*sen 10

对于 Angular 9+:

根据Angular/CLI 上的Angular.json这个GitHub 问题,配置略有变化,这导致之前的配置模式发生变化。

改编自@sacgrover 的评论以及我自己的评论

老办法

"@schematics/angular:component": {
    // true => DO generate spec files, false => DON'T generate them
    "spec": true,
    "styleext": "scss"
}
Run Code Online (Sandbox Code Playgroud)

新方法:

"@schematics/angular:component": {
    // true => DON'T generate spec files, false => DO generate them
    "skipTests": true,
    "style": "scss"
}
Run Code Online (Sandbox Code Playgroud)

附加参考 => CLI 生成命令的 Angular 文档


小智 8

对于角度 8+:

不推荐使用选项“spec”:改用“skipTests”,因此如果要创建新组件,请使用:

ng g c my-new-component --skipTests=true
Run Code Online (Sandbox Code Playgroud)


Dan*_*des 7

"@schematics/angular:component": {"style": "scss","skipTests": true}
Run Code Online (Sandbox Code Playgroud)

只需添加"skipTests":true到您的angular.json文件中即可解决问题


TRD*_*ren 6

你可以加 --spec=false

ng g c home --spec=false
Run Code Online (Sandbox Code Playgroud)

日志将是

CREATE src/app/home/home.component.scss (0 bytes)
CREATE src/app/home/home.component.html (23 bytes)
CREATE src/app/home/home.component.ts (262 bytes)
UPDATE src/app/app.module.ts (467 bytes)
Run Code Online (Sandbox Code Playgroud)