在 Angular 中生成没有 spec.ts 文件的组件 2+

Generating Component without spec.ts file in Angular 2+

有没有办法在我创建新组件时删除 Angular 2+ 中的 spec.ts 文件。我知道这是为了测试目的,但如果我不需要它怎么办。

可能有一些设置可以禁用这个特定的测试文件。

更新 Angular >=8 CLI

对于一个组件,使用以下命令:

ng generate component --skip-tests=true component-name

对于单个项目,在 angular.json 中更改或添加以下内容:

{ 
  "projects": {
    "{PROJECT_NAME}": {
      "schematics": {
        "@schematics/angular:component": {
          "skipTests": true
        }
      }
    }
  }
}

对于所有项目的全局设置,请在 angular.json 中更改或添加以下内容:

{ 
  "schematics": {
    "@schematics/angular:component": {
      "skipTests": true
    }
  }
}

或者使用命令行

ng config schematics.@schematics/angular:component.skipTests true

在您的 angular-cli.json 中将 spec.component 参数设置为 false:

{
   ...
   "defaults" : {
       ...
       "spec": {
           ...
           "component": false
       }
   }
}

或在创建过程中使用 --spec=false 选项

ng generate component --spec=false component-name

当使用 angular-cli 时,有很多选项需要传递。要生成不带测试的新组件,您可以简单地添加 --spec=false,如下所示:

ng generate component --spec=false my-component

angular-cli.json 中还有一个选项,您希望默认启用哪些类型的规范,您可以在其中修改行为:

"defaults": {
  "spec": {
    "class": false,
    "component": true,
    "directive": true,
    "module": false,
    "pipe": true,
    "service": true
  }
}

根据 fix #156,您可以使用

创建一个没有规范文件的组件
ng generate component my-comp --nospec
ng g c component-name --spec false

在最近的 Angular 版本中,您可以配置 cli 生成器以禁止在 angular-cli.json 中为组件和服务创建规范文件,如下所示:

"defaults": {
    "component": { "spec": false },
    "service": { "spec": false },
    ...
}

您可以添加额外的行来禁用守卫和 类 等的规格。

有禁用Angular默认生成"spec"个文件的命令

ng set defaults.class.spec=false
ng set defaults.component.spec=false

更新: 对于 Angular 6

ng config schematics.@schematics/angular.component.spec false

就试试这个吧。 这是有效的

ng g c component_name --spec false

对于Angular 6

ng config schematics.@schematics/angular.component.spec false

For angular 6 在 "schematics":{} 内的 angular.json 中添加:

"@schematics/angular": {
  "component": {
    "spec": false
  }
}

正如 Franklin Pious 所建议的那样,运行 这个命令:

ng config schematics.@schematics/angular.component.spec false

对于angular 6+只需运行这个命令:

ng config schematics.@schematics/angular.component.spec false

只需将其添加到您的 angular.json 文件中即可

  "schematics": {
    "@schematics/angular": {
      "component": {
        "spec": false
      }
    }
  }

注意:在粘贴此冲突检查之前,希望对您有所帮助

在Angular7

中用这个简单的命令简单地创建组件
ng g c component-name --spec false

或者如果真的不想将它包含在任何组件中,只需更新 angular.json

"@schematics/angular": {
  "component": {
    "spec": false
  }
}

对于 Angular 8: ng generate component mycomponent --skipTests=false

对于 Angular 7 及更高版本,这将有效:

ng generate component componentname --skipTests

ng generate component componentname --skipTests=true

您可以在创建组件时使用以下命令

ng g c component-name --spec false

如果您想跳过 spec.ts 文件,也可以使用以下命令:

ng g c try-it --skipTests=true

其中

g c => 生成组件, try-it => 组件名称, --skipTest=true => == -- spec false

For Angular 9 you can use

ng g c "componentName" --spec=false

to generate component without spec file

之所以添加这一点信息,是因为我发现自己遇到了同样的问题并且无法使用当前答案解决它,而且我不想在 angular-cli.json 上进行更改文件。 Angular CLI --spec=false 的最新版本似乎已过时,因此不再有效,请改用 --skipTests

测试时间:

Angular CLI: 9.1.1
Node: 12.16.1
OS: win32 x64

你的命令是: ng g c mycomponent --skipTests 代替 ng g c mycomponent --spec=false

PS:始终使用 --dry-run 选项测试您的命令以测试您的输出。

这是什么 angular 9

ng g class models\user --skip-tests true

它不会生成 spec.ts 个文件。

--spec 将不再有效。请改用 --skip-tests

您将通过以下命令看到所有选项:

ng g c --help

如果您想跳过特定组件的规范文件。

新版本:

ng generate component "componentName" --skipTests

例子

ng generate component recipe-list --skipTests

旧版本:

ng generate component "componentName" --spec false

例子

ng generate component recipe-list --spec false

最新Angular 9兼容

CLI 命令

ng generate component your-component-name --skipTests=true

使用别名 s 而不是 --skipTests

ng generate component your-component-name -s=true

修改 angular.json 以避免总是使用上述 CLI 命令

将以下代码片段复制到特定项目 (projects.your-project-name) 的 angular.json.

以下内容将确保不会为 组件Class[=44= 创建 .spec 文件]、指令管道服务ng generate命令。 可以根据需要选择。

{
  ...
  "projects": {
    "your-project-name": {
      ...
      "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
        }
      },
    ...
}

PS:--spec=false 选项现已弃用,将无法使用

使用时:

  • Angular CLI:10.0.3
  • 节点:12.16.3
  • Angular: 10.0.4

生成组件时必须使用“--skip-tests true”。 (注意:您可以通过在终端中尝试“ng v”或“ng -v”来获取上述版本信息)。

您可以使用“ng g c --help”获取“ng g c(ng generate component 的缩写)”的完整开关列表。

或者您可以手动添加组件。为此,通过右键单击项目的 /src/app 文件夹创建一个新文件夹。创建文件夹后,右键单击它可以添加一个或多个文件,例如mycomp.component.html和mycomp.component.ts。 添加 mycomp.component.ts 是组件的最低要求列表,因为您可以将内联 css 和 html 添加到您的 .ts 文件中。

示例:

import { Component } from '@angular/core';

@组件({ 选择器:'app-mycomp', 模板:'<p> Hello Angular </p>' })

导出 class MyComp {}

在 app.module.ts 声明列表中导入并注册 MyComp,并将其添加到 app.component.html 或其他模板,使用选择器 (<app-mycomp></app-mycomp>

Angular < 8 $ ng g component component-name --spec=false

Angular > 8 $ ng g component component-name --skipTests=false --flat

   $ ng g component employee/listEmployees --skipTests=false --flat

这很容易做到。在创建组件时添加

--skipTests=true

ng generate component --skipTests=true componentName

或者

ng g c --skipTests=true componentName

对于angular 8+你只需要添加

--skipTests=true

最后

ng g c component-name --skipTests=true

g简写为generate。 c 缩写为 component

你也可以使用

ng generate component component-name --skipTests=true

它对我有用 angular 11

ng g c posts/new-component --module app --skip-tests

注:

组件名称应如下所示:new-componentnewComponent.

为特定文件夹生成:dir/new-component

new-component 添加到 app.module.ts : --module app

只使用 --skip-tests 命令生成没有 spec.ts 文件的组件

回复:在 Angular 中生成没有 spec.ts 文件的组件 2+

ng g c ComponentName --skip-tests true

在您的项目中进入 angular.json 文件并在原理图字段中添加 spec - false

保存并重新启动您的项目 现在你可以创建没有规格文件的所有组件

 "schematics": {
                "@schematics/angular:component": {
                    "style": "scss",
                    "spec": false
                }
            },

对于 Angular 10+ - 对于所有项目的全局设置。

  1. 转到 angular.json 文件

  2. 在“原理图”字段中添加:

     "@schematics/angular:component": {
       "skipTests": true
     },
    

** 服务、警卫等也是可能的...

    "@schematics/angular:service": {
      "skipTests": true
    },
    "@schematics/angular:guard": {
      "skipTests": true
    }