除了手动编辑组件文件夹名称、.css、.ts、spec.ts 和 app.module.ts 等所有组件文件,还有没有使用 Angular CLI 重命名组件的快捷方式?
除了手动编辑组件文件夹名称、.css、.ts、spec.ts 和 app.module.ts 等所有组件文件,还有没有使用 Angular CLI 重命名组件的快捷方式?
不行!
没有命令可以更改使用组件创建命令生成的所有文件的名称。因此,需要手动重命名/编辑创建的ts
、html
、css/scss
和.spec.ts
文件。
我经常使用angular cli
,我认为如果有这个命令就更好了,因为有时我们只是创建angular组件并需要重命名它们。由于没有此重命名命令,删除已创建的angular组件、指令等,然后再运行命令以创建组件真的很麻烦。
这里是添加此功能的讨论链接:重命名angular组件
WebStorm 2018.1.2
版本允许重命名组件,但从未使用过。将来有机会再试试。 - Aniruddha Das是的!
现在有一个VS Code扩展程序可以为您完成所有这些步骤,它被称为Rename Angular Component。
我希望以后可以将其移植到WebStorm和Schematic中。
以前,在VS Code中至少需要进行三个半自动化步骤。但是这个扩展程序可以全部完成。
我意识到这在推广我自己的解决方案,但它是免费的、开源的,也是完整的答案。如果它不能满足您的所有需求,您可以在代码库上发布问题,它会被改进。
目前Angular CLI不支持重命名或重构代码的功能。
您可以通过一些IDE实现此功能。
Intellij、Eclipse、VSCode等都默认支持重构。
现在,VSCode正在显示一些上升趋势,个人我是它的粉丝。
使用VSCode进行重构
确定引用:-
通过选择变量并按快捷键SHIFT
+F12
,VS Code可以帮助您找到所有变量的引用。这对Type Script非常有效。
重命名所有引用实例:-
找到所有引用后,您可以按F2
打开弹出窗口,并更改值,然后单击“Enter”以更新所有引用实例。
重命名文件和导入 您可以使用插件重命名文件及其导入引用。更多详细信息请参见此处
通过以上步骤,在重命名变量和文件后,您可以实现Angular组件的重命名。
这是我用来重命名组件的清单:
1. 重命名组件类(使用VSCode的重命名符号功能将更新所有引用)
<Old Name>Component => <New Name>Component
2. 使用 VSCode 的在文件中替换功能重命名 @Component 选择器及其引用:
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的替换文件功能):
<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']
})
那应该足够了。
我个人还没有找到相应的命令。只需创建一个新组件(重命名),然后复制粘贴以前组件的 html
、css
和 ts
。在 ts
中,类名显然会被替换。这是最安全的方法,但需要花费一些时间。
“Original Answer” 翻译成中文是 “最初的回答”。
只需像平常一样重命名文件和组件,然后重新启动 ng serve
。非常简单。
重命名文件、路径和引用。关键是,在所有重命名完成之后,必须关闭正在运行的服务器并重新启动它。
要在Angular中更改组件名称,您需要按照以下步骤进行:
打开包含要重命名的组件的文件。
查找组件类定义上方的@Component
装饰器。
将@Component
装饰器中的选择器属性更改为您要赋予组件的新名称。
例如,如果您想将组件名称从my-old-component更改为my-new-component,则应执行以下操作:
@Component({
selector: 'my-new-component',
...
})
export class MyOldComponent {
...
}
保存文件。 就这样!您已成功在Angular中更改了组件名称。
需要记住的是,您可能还需要更新应用程序其他部分(例如模板或路由配置)中对该组件的任何引用。
目前还没有重命名cli命令。但我发现解决这个问题最简单的方法是在cli上生成一个新组件,然后将内容复制到新组件中。 然后删除原始组件,您将在代码库中需要重命名为新组件名称的每个位置上都会有一个错误。一旦处理完所有错误,您就完成了! :)
另外,您还需要删除旧组件的导入语句。
ng destroy
,否则你就没那么幸运了... - Kyle Krzeski