ts-morph

Renaming

Given the source file for following code:

enum MyEnum {
  myMember,
}
const myVar = MyEnum.myMember;

Renaming can be done as follows:

const myEnum = sourceFile.getEnum("MyEnum")!;
myEnum.rename("NewEnum");

Which will rename all usages of MyEnum to NewEnum across all files.

So the file above would now contain the following code:

enum NewEnum {
  myMember,
}

const myVar = NewEnum.myMember;

Renaming in comments and strings

Set the renameInComments and renameInStrings options to true (they are false by default):

myEnum.rename("SomeOtherName", {
  renameInComments: true,
  renameInStrings: true,
});

Renaming with prefix and suffix text

Note: This feature is only supported when using TypeScript 3.4+

By default, renames will not change shorthand property assignments or add aliases to import & export specifiers.

For example, renaming the a variable declaration to b...

const a = 5;
const x = { a };

export { a };

...will do the following:

const b = 5;
const x = { b };

export { b };

This behaviour can be changed by enabling the usePrefixAndSuffixText setting, which will do the following:

const b = 5;
const x = { a: b };

export { b as a };

This behaviour change can be specified when renaming:

varA.rename("SomeOtherName", {
  usePrefixAndSuffixText: true,
});

Or globally:

const project = new Project({
  manipulationSettings: {
    usePrefixAndSuffixTextForRename: true,
  },
});
// or
project.manipulationSettings.set({
  usePrefixAndSuffixTextForRename: true,
});

Renaming Files or Directories

See: