【问题标题】:angular 7 cli generate each service, pipe,etc in their own directoryangular 7 cli 在自己的目录中生成每个服务、管道等
【发布时间】:2019-01-31 19:19:17
【问题描述】:

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

services/my-service/my-service.service.ts
services/my-service/my-service.service.spec.ts

但现在它会创建

services/my-service.service.ts
services/my-service.service.spec.ts

有没有办法在不写冗长的ng g service services/my-service/MyService ?我没有找到任何相关但可能我没有使用正确的关键字的情况下回到其他行为。

【问题讨论】:

标签: angular angular-cli-v7


【解决方案1】:

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

...
"projects": {
    "sample-angular": {
      "root": "",
      "sourceRoot": "src",
      "projectType": "application",
      "prefix": "app",
      "schematics": {
        "@schematics/angular:service": {
          "flat": false
        }
     },
     ...
}

添加此覆盖后,运行命令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)

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

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

希望对您有所帮助!

【讨论】:

  • 很好的答案——虽然 Angular 默认 存在是有原因的,但如果你想在给定的应用程序中遵循自己的约定,这就是这样做的方法。
  • @NathanBeck 当我有超过 5 个服务时,我发现它有点混乱。因为我有 10 个文件而不是 5 个 :(
  • @alexander-staroselsky 有没有一种方法可以将相同的属性 (flat) 应用于所有原理图,而无需为每个键编写它? (组件、管道、服务等)
  • @distante 我不这么认为,但我可能是错的。问题是并非所有原理图都具有flat 选项,包括Guard、Enum 和Interface 等等。您可能想在此处或@angular/cli 项目的问题中发布一个新问题,因为可能存在某种以某种方式针对所有原理图的 glob 模式。
【解决方案2】:

flat 标志在生成服务时默认为true。

我建议使用以下方法之一(尚未在 Angular CLI 7 上进行测试,但两者都适用于 Angular CLI 6)

ng g service services/my-service --no-flat
ng g service services/my-service --flat=false

【讨论】:

    猜你喜欢
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 2019-06-25
    • 2020-10-24
    • 1970-01-01
    相关资源
    最近更新 更多