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

我知道这是一种不好的做法,但请容忍我:

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

所以对于每次跑步,是的,我可以做 ng g c foo --it --is --spec=false

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

我鲁莽地做了一些 (这没有工作)的事情,比如:

ng set spec=false --global

我还尝试通过填充排除数组来配置我的 src/tsconfig.json:

"exclude": [
"**/*.spec.ts"
]
52337 次浏览

您可以运行这个命令来禁用特定类型文件的规格文件生成:

ng set defaults.spec.FILETYPE false

例如:

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

或者,您可以只禁用从 angle-cli. json 文件生成所有规格文件。

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

更新 Sabbir Rahman 的回答:

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

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

转角9 + (以下版本6 +)

1)将代码片段复制到 angular.json的根目录下(为所有项目/全局配置设置)
2)或者将代码片段复制到 angular.json中特定项目(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
}
},

每类文件 示意图的所有可配置选项:

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

角度6 +

1)将代码片段复制到 angular.json的根目录下(为所有项目/全局配置设置)
2)或者将代码片段复制到 angular.json中特定项目(projects.your-project-name)的根目录(为特定项目配置设置)。

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

每个文件类型(示意图)的所有可配置选项:

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

带角度接口的角度接口配置

错误:

ng set defaults.spec.component false命令导致错误: get/set have been deprecated in favor of the config command.

ng set换成了 ng config

使用角度 CLI (配置命令用法) :

angular.json中用于生成规格、内联模板、内联样式等的设置现在保存在 schematics.@schematics/angular.<file-type>.<setting>中。

运行 ng config schematics.@schematics/angular.component.spec false来配置组件的规格。这个命令在 angular.json文件的示意图属性中添加设置。


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

Schema.json 中的示意选项

如何在角度 CLI v6中做 X

如果您正在使用 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
}
},

如果为真,你可以添加 --skipTests=true|false,它不会生成任何 眼镜

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

此行不会生成任何 眼镜文件

编辑:

注意: 当角度7这个命令不工作,即使这个命令被提到在角度的官方网站。 这里: < a href = “ https://angular.io/cli/generat# Component”rel = “ norefrer”> https://angular.io/cli/generate#component

你可以加入 --spec=false

例子

ng g c home --spec=false

日志

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)

在 Angular.json 上添加以下代码

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

你可以尝试 --skip-tests当你创建你的应用程序如下。

ng new yourProjectName --skip-tests

角度8 + :

不推荐使用选项“ spec”: 改为使用“ skipTest”,因此如果您想创建一个新组件,请使用:

ng g c my-new-component --skipTests=true

角度9 + :

Angular.json配置发生了轻微的变化,导致以前的配置模式发生了变化,每个 Angular/CLI 上的 GitHub 问题都是如此。

改编自 @ Sacgrover 的评论我自己的:

老方法

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

新方法:

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

附加参考文献 = > 用于 CLI 生成命令的角度文档

只需运行这个命令: ng config schematics.@schematics/angular.component.spec false

只要这样做,你就会没事的:

ng generate component newFile --skip-tests
"@schematics/angular:component": {"style": "scss","skipTests": true}

只要将 "skipTests":true添加到 Angular Json文件中,就可以解决这个问题

可以添加 --skipTests=true来停止生成规范文件

例如:

ng g s core/services/auth/auth-guard --skipTests=true

日志

CREATE src/app/core/services/auth/auth-guard.service.ts (138 bytes)