【问题标题】:How to rename a component in Angular CLI?如何在 Angular CLI 中重命名组件?
【发布时间】:2018-03-06 18:24:51
【问题描述】:

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

【问题讨论】:

标签: angular angular-cli rename angular-components


【解决方案1】:

是的!

现在有了。

有一个 VS Code 扩展可以为您完成所有这些步骤。它叫做Rename Angular Component

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

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

我意识到这是在推广我自己的解决方案。但它是免费的、开源的和完整的答案。如果它不能满足您的所有要求,您可以在 repo 上发布问题,它会得到改进。

【讨论】:

  • 如果它适合你,请点赞!它确实为您完成了所有工作。
【解决方案2】:

目前还没有重命名 cli 命令。但是我发现解决这个问题的最简单方法是在 cli 上生成一个新组件并将内容复制到新组件中。 然后删除原始组件,代码库中每个需要重命名为新组件名称的位置都会出现一个错误。处理完所有错误后,您就完成了! :)

PS:您还必须删除旧组件的导入语句。

【讨论】:

    【解决方案3】:

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

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

    <Old Name>Component => <New Name>Component
    

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

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

    src\app\<module>\<old-name> => src\app\<module>\<new-name>
    

    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.*
    

    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']
    })
    

    应该够了

    【讨论】:

    • 感谢这是一份很棒的清单。你可能会认为这是一个乏味但相当简单的手动过程,你会认为有人会自动化它并将其添加为 VS Code 的插件
    • 超级好用...!
    【解决方案4】:

    只需按照您通常的想法重命名文件和组件,然后重新启动ng serve。轻松愉快。

    重命名文件、路径和引用。关键是您必须关闭正在运行的服务器并在重命名所有内容后重新启动它。

    【讨论】:

      【解决方案5】:

      如果您使用 VS Code,您可以重命名 .ts, .html, .css/.scss, .spec.ts 文件,IDE 会为您处理导入。因此,从您的组件导入文件的文件(例如app.module.ts)不会有任何投诉。但是,您仍然必须在使用它的任何地方重命名组件名称。

      【讨论】:

        【解决方案6】:

        在 WebStorm 中,您可以在 TypeScript 文件中的组件名称上右键单击 → 重构 → 重命名,它会在任何地方更改名称。

        【讨论】:

          【解决方案7】:

          不!

          没有任何命令可以更改使用组件创建命令生成的所有文件的名称。于是创建了tshtmlcss/scss.spec.ts 文件需要手动重命名/编辑。

          我是angular cli 的频繁用户,我认为这将是一个很好的命令,因为有时我们只是创建角度组件并需要重命名它们。由于没有这个重命名命令,删除创建的角度组件、指令等,然后再次运行命令来创建组件真的很痛苦。

          这里是添加此功能的讨论链接rename angular component

          【讨论】:

          • new WebStorm 2018.1.2 on words 允许重命名组件但从未使用过它。改天试一试
          • 以 VSCode 为例,当出现错误(导入的文件不存在、组件不存在等)时,您可以在左侧的文件资源管理器窗格中看到错误指示。所以,在我的情况下,我需要重命名一个组件,我只是重命名了它的文件夹和内部文件名,然后我只是按照所有错误指示,相应地修改了这个组件的名称。我想这个功能现在也存在于其他现代 IDE 中......但是有一个自动执行此操作的 angular-cli 命令(很像“ng g c ...”)会很棒!快乐编码! :)
          • 自 2016 年以来就有关于此功能的讨论:github.com/angular/angular-cli/issues/900 对此类功能的所有请求都链接到此线程并关闭。 @AniruddhaDas 您介意将其添加到答案中吗?
          • @Stefan 现已添加。看看是否看起来不错,也可以随意编辑。
          • 应该有move命令而不是rename,因为move命令也可以用作rename命令。
          【解决方案8】:

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

          并且重命名将在所有相关位置执行。

          【讨论】:

          • 这是@Aniruddha Das 在当前线程中首次报道的
          【解决方案9】:

          我个人还没有找到任何相同的命令。只需创建一个新组件(重命名)并复制粘贴前一个组件的htmlcssts。在ts 中,类名显然会被替换。这是最安全的方法,但确实需要一点时间。

          【讨论】:

            【解决方案10】:

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

            您可以借助一些 IDE 来实现此类功能。

            Intellij、Eclipse、VSCode 等。默认支持重构。

            现在 VSCode 显示出一些上升趋势,我个人是这个的粉丝

            使用 VSCode 重构

            确定参考:- VS Code 通过选择变量并按下快捷键SHIFT + F12 来帮助您查找变量的所有引用。这与 Type Script 配合得非常好。

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

            重命名文件和导入 您可以使用插件重命名文件及其导入引用。更多详情可查看here

            重命名变量和文件后,通过以上步骤即可实现角度组件重命名。

            【讨论】:

            • 你说的是引用、文件和导入,但是重命名组件呢?
            • @OrtomalaLokni angular-cli 不支持重命名。通过这三个步骤可以完成重命名的任务。
            • 哇,喜欢这个扩展!
            【解决方案11】:

            正如第一个答案所示,目前没有办法重命名组件,所以我们都只是在谈论变通方法! 这就是我所做的:

            1. 创建您喜欢的新组件。

              ng 生成组件newName

            2. 使用 Visual Studio 代码编辑器或任何其他编辑器,然后方便地并排移动代码/片段!

            3. 在 Linux 中,使用 grep & sed(查找和替换)来查找/替换引用。

              grep -ir "旧名"

              cd 你的文件夹

              sed -i 's/oldName/newName/g' *

            【讨论】:

              猜你喜欢
              • 2017-03-01
              • 1970-01-01
              • 2017-10-08
              • 2016-12-15
              • 2017-08-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-08-19
              相关资源
              最近更新 更多