Угловой 6 + CLI (TypeScript) - Как остановить создание тестовых файлов.spec.ts

Я ЗНАЮ ЭТО ВИДЕТЬ ПЛОХОЙ ПРАКТИКОЙ, но пара со мной:

Я использую Angular -CLI, и особенно ng g, чтобы сгенерировать все мои классы, однако меня не интересует какой-либо тестовый файл *.spec.ts, и я знаю, что есть два флага (--inline-template, --inline-style) для обработки встроенных CSS и HTML вместо отдельных файлов. и для spec флаг по умолчанию установлен в значение true --spec

Итак, для каждого прогона да, я могу сделать это ng g c foo --it --is --spec=false

Но как отключить создание тестовых файлов по всему миру? есть ли настройка по умолчанию для него?

Rashly, я сделал некоторые вещи вроде (это не сработало):

ng set spec=false --global

Затем попытался настроить файл настроек ts src/tsconfig.json, заполнив массив exclude.

"exclude": [
    "**/*.spec.ts"
]

Ответ 1

Для угловых 6>

Конфигурация (например, для генерации спецификаций) может быть выполнена вручную или с помощью Angular CLI.


Ручная угловая конфигурация CLI

1) Скопировать фрагмент в корень angular.json (настройка параметров для всех проектов/глобально).
2) Или скопируйте фрагмент в корень определенного проекта (projects.your-project-name) в 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
  }
},

Все настраиваемые параметры для каждого типа файла (параметры схемы):

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

Угловая конфигурация CLI с угловым CLI

ОШИБКА:

Команда ng set defaults.spec.component false приводит к ошибке: get/set have been deprecated in favor of the config command.

ng set got changed to ng config.

Использование Angular CLI (использование команды config):

Настройки для генерации спецификаций, встроенных шаблонов, встроенного стиля и т.д. В angular.json теперь сохраняются внутри [email protected]/angular.<file-type>.<setting>.

Запустите ng config [email protected]/angular.component.spec false чтобы настроить спецификации для компонентов. Эта команда добавляет параметр в свойство angular.json файле angular.json.


Файл рабочей области Angular CLI (angular.json) в Angular Github

Опции схемы внутри schema.json

Как сделать X в Angular CLI v6

Ответ 2

Вы можете запустить эту команду, чтобы отключить создание файла спецификаций для определенного типа файла:

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

Ответ 3

Если вы используете 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
    }
  },

Ответ 4

Просто обновить ответ Саббира Рахмана:

В версии 1.0.2 CLI вам нужно будет установить для файла 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
    }
  }

Ответ 5

Вы можете добавить --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)

Ответ 6

Вы можете добавить --skipTests=true|false если true, он не будет генерировать какие-либо спецификации.

пример: ng g component componentName --skipTests=true

эта строка не будет генерировать какие-либо файлы spec.ts

РЕДАКТИРОВАТЬ:

Примечание: Начиная с angular 7 эта команда не работает, хотя эта команда упоминается на официальном сайте angular. Здесь: https://angular.io/cli/generate#component