如何在Angular CLI中重命名组件?

Tho*_*aso 145 angular-components angular

除了手动编辑文件夹名称,.css,.ts,spec.ts和app.module.ts等所有组件文件之外,是否有任何使用Angular CLI重命名组件的快捷方式?

Ani*_*Das 149

没有!

没有命令可以更改使用component create命令生成的所有文件的名称.所以创造ts,html,css/scss,.spec.ts 文件需要手动重新命名/编辑.

我经常使用,angular cli我认为这是一个很好的命令,因为有时我们只是创建角度组件并需要重命名它.由于此重命名命令不存在,删除创建的角度组件,指令等并再次运行命令来创建组件真的很痛苦.

  • 这也可以方便地重复使用旧项目. (3认同)
  • 单词上的新“WebStorm 2018.1.2”允许重命名组件,但从未使用过它。有一天会尝试 (2认同)
  • 例如,在VSCode中,当出现问题时(导入的文件不存在,组件不存在等),您可以在左侧的文件浏览器窗格中看到错误指示。因此,在我的情况下,我需要重命名一个组件,我只是重命名了它的文件夹和内部文件名,然后我遵循了所有错误指示,并相应地修改了该组件的名称。我想现在这些功能也存在于其他现代IDE中……但是,要有一个自动执行此操作的angular-cli命令(很像“ ng gc ...”),那就太好了!编码愉快!:) (2认同)
  • 自 2016 年以来,一直有关于此功能的讨论:https://github.com/angular/angular-cli/issues/900 对此类功能的所有请求都链接到此线程并关闭。@AniruddhaDas 你介意将其添加到答案中吗? (2认同)
  • 应该有“move”命令而不是“rename”,因为“move”命令也可以用作“rename”命令。 (2认同)

小智 85

是的!

现在有了。

有一个 VS Code 扩展可以为您执行所有这些步骤。它称为重命名角度组件

我希望稍后将其移植到 WebStorm 和 Schematic 中。

以前,在 VS Code 中至少需要三个半自动化步骤。这个扩展可以完成所有这些。

我意识到这是在推广我自己的解决方案。但它是免费的、开源的、完整的答案。如果它不能完成您想要的所有操作,您可以在存储库上发布问题,它将会得到改进。

  • 它能够为我重命名 .spec 文件中的组件名称字符串。当然,现在是 2023 年 4 月 18 日。 (3认同)

sam*_*j90 39

目前,Angular CLI不支持重命名或重构代码的功能.

您可以在某些IDE的帮助下实现此类功能.

Intellij,Eclipse,VSCode等..默认支持重构.

如今VSCode正呈现出一些上升趋势,我个人对此充满了喜爱

使用VSCode进行重构

确定参考: - VS代码通过选择变量并按快捷键SHIFT+ 帮助您找到变量的所有引用F12.使用Type Script非常好用.

重命名所有引用实例: - 找到您可以按下的所有引用后,F2将打开一个弹出窗口,您可以更改该值并单击"输入",这将更新所有引用实例.

重命名文件和导入 您可以使用插件重命名文件及其导入引用.更多细节可以在这里找到

在此输入图像描述

通过重命名变量和文件后的上述步骤,您可以实现角度组件重命名.

  • 您谈论的是引用,文件和导入,但是重命名组件又如何呢? (2认同)

Vit*_*kov 8

这是我用来重命名组件的清单

1.重命名组件类(VSCode重命名符号会更新所有引用)

<Old Name>Component => <New Name>Component
Run Code Online (Sandbox Code Playgroud)

2.重命名@Component 选择器和引用(使用 VSCode 的Replace in Files):

app-<old-name> => app-<new-name>

Result:
@Component({
  selector: 'app-<old-name>' => 'app-<new-name>',
  ...
})

<app-{old-name}></app-{old-name}> => <app-{new-name}></app-{new-name}>
Run Code Online (Sandbox Code Playgroud)

3.重命名组件文件夹(在VSCode中重命名文件夹时,会更新模块和其他组件中的引用)

src\app\<module>\<old-name> => src\app\<module>\<new-name>
Run Code Online (Sandbox Code Playgroud)

4.重命名组件文件(手动重命名最快,但您也可以使用终端一次重命名)

<old-name>.component.* => <new-name>.component.*

Bash:
find . -name "<old-name>.component.*" -exec rename 's/\/<old-name>\.component/\/<new-name>.component/' '{}' +

PowerShell: 
Get-Item <old-name>.component.* | % { Rename-Item $_ <new-name>.component.$($_.Extension) }

Cmd:
rename <old-name>.component.* <new-name>.component.*
Run Code Online (Sandbox Code Playgroud)

5.替换@Component中的文件引用(使用VSCode的Replace in Files):

<old-name>.component => <new-name>.component

Result:
@Component({
  ...
  templateUrl: './<old-name>.component.html' => './<old-name>.component.html',
  styleUrls: ['./<old-name>.component.scss'] => ['./<new-name>.component.scss']
})
Run Code Online (Sandbox Code Playgroud)

那应该足够了

  • 谢谢,这是一个很棒的清单。您可能会认为,鉴于有一个繁琐但相当简单的手动过程,您可能会认为有人会自动化它并将其添加为 VS Code 的插件 (3认同)

P M*_*cki 5

虽然 OP 要求使用 CLI 命令,但一些答案集中在 IDE 上。在这个答案中,我只是确认当前的 WebStorm/IntelliJ 确实允许重命名组件。需要做的就是尝试重命名文件中的类.ts。您将看到:

在此输入图像描述

并且重命名将在所有相关的地方进行。