Angular 7 cli 在自己的目录中生成每个服务、管道等

dis*_*nte 1 angular angular-cli-v7

当我运行 Angular Cli 的早期版本时,ng g service services/MyService它创建了:

services/my-service/my-service.service.ts
services/my-service/my-service.service.spec.ts
Run Code Online (Sandbox Code Playgroud)

但现在它创造了

services/my-service.service.ts
services/my-service.service.spec.ts
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以返回其他行为而无需编写详细信息ng g service services/my-service/MyService ?我没有找到任何相关内容,但也许我没有使用正确的关键字。

Ale*_*sky 5

虽然您可以--flat=false在每次执行时传递ng generate以便根据服务/管道/指令名称创建目录,但您实际上可以覆盖默认的原理图选项,例如flat在项目级别,angular.json以避免--flat=false每次在命令上都需要传递该选项线。例如,要在执行时设置flat为,您可以在中相应项目的属性中添加一个附加属性:falseng g service services/MyService@schematics/angular:serviceschematicsangular.json

...
"projects": {
    "sample-angular": {
      "root": "",
      "sourceRoot": "src",
      "projectType": "application",
      "prefix": "app",
      "schematics": {
        "@schematics/angular:service": {
          "flat": false
        }
     },
     ...
}
Run Code Online (Sandbox Code Playgroud)

添加此覆盖后,运行命令ng g service services/MyService,生成以下输出:

CREATE src/app/services/my-service/my-service.service.spec.ts (349 bytes)
CREATE src/app/services/my-service/my-service.service.ts (138 bytes)
Run Code Online (Sandbox Code Playgroud)

您可以覆盖所需的任何特定原理图,无论是管道、服务、组件、模块还是指令。您可以在 处查看默认原理图选项/node_modules/@angular/cli/lib/config/schema.json。有许多选项,您可以精确调整要生成的内容以及如何避免需要记住选项并将选项传递到命令行。

schematics如果您有多个项目,则可以在同一级别创建属性来projects覆盖所有项目的原理图选项。

希望这有帮助!