Когда я пытаюсь сгенерировать компонент без автоматически созданного файла .spec.ts, я получаю следующую ошибку:
$ ionic generate component myComponent --skip-tests
> ng generate component myComponent --skip-tests --project=app
Error: Unknown argument: skip-tests
[ERROR] Could not generate component.
Я использую глобально установленную версию Ionic CLI 7.2.0 и следующие версии:
"@angular/core": "^17.0.2",
"@ionic/angular": "^8.0.0",
"@ionic/angular-toolkit": "^11.0.1",
В только что установленном проекте Angular 17 --skip-tests работает нормально.
Как я могу создавать компоненты без файлов .spec.ts?





Вместо этого используйте следующую команду:
ionic generate component myComponent --spec false
Он сгенерирует компонент без файла .spec.ts:
$ ionic g c myComponent --spec false
> ng generate component myComponent --spec=false --project=app
CREATE src/app/my-component/my-component.component.scss (0 bytes)
CREATE src/app/my-component/my-component.component.html (31 bytes)
CREATE src/app/my-component/my-component.component.ts (292 bytes)
[OK] Generated component!
В [Схемах Ionic Angular Toolkit][1] в настоящее время используется старый способ указания исключения тестовых файлов. Некоторое время назад команда Angular изменила spec: false на skipTests: true в схемах Angular, но команда Ionic не внесла такого же изменения.
Если вы хотите всегда исключать файлы спецификаций при создании компонентов, обновите свой angular.json следующим образом:
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"app": {
"projectType": "application",
"schematics": {
"@ionic/angular-toolkit:page": {
"spec": false
},
"@ionic/angular-toolkit:component": {
"spec": false
}
},
Примечание. Если вы хотите, чтобы Ionic не включал файлы .spec.ts для других типов файлов, таких как сервисы, каналы или директивы, вам нужно использовать skipTests, а не spec.
Например:
ionic generate service myService --skipTests
> ng generate service myService --skip-tests --project=app
CREATE src/app/my-service.se
Если вы хотите пропустить все тесты, ваш angular.json будет выглядеть так:
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"app": {
"projectType": "application",
"schematics": {
"@ionic/angular-toolkit:page": {
"spec": false
},
"@ionic/angular-toolkit:component": {
"spec": false
},
"@schematics/angular:directive": {
"skipTests": true
},
"@schematics/angular:pipe": {
"skipTests": true
},
"@schematics/angular:service": {
"skipTests": true
}
},
Редактировать май 2024 г.
Я попробовал это решение в другом проекте Angular Ionic с Ionic 8.0 и Angular 17.3, оно не сработало. Мне пришлось вообще удалить "@ionic/angular-toolkit:component" из схемы и вместо этого использовать @schematics/angular:component с skipTests: true:
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"app": {
"projectType": "application",
"schematics": {
"@ionic/angular-toolkit:page": {
"spec": false
},
"@schematics/angular:component": {
"skipTests": true
},
"@schematics/angular:directive": {
"skipTests": true
},
"@schematics/angular:pipe": {
"skipTests": true
},
"@schematics/angular:service": {
"skipTests": true
}
},
[1]: https://github.com/ionic-team/angular-toolkit/blob/bad1f939c788a8804e9a39a11b4651163dc72f78/packages/schematics/component/schema.json#L50C8-L50C9