Codemod to remove inject as service
1
1. @ember/service
provides service
since Ember 4.1. inject
, which became an alias to service
, is planned to be deprecated in v6.
The codemod helps you standardize how you inject services:
- Replace
inject
withservice
1 - Replace
!
withdeclare
in TS files2 - Remove
private
andreadonly
keywords in TS files2
It preserves your code whenever possible.
1. Replaces inject as ...
and service as ...
, too.
2. Matches the style shown in the Ember Guides.
Step 1. Quickly migrate.
cd <path/to/your/project>
npx ember-codemod-remove-inject-as-service <arguments>
Step 2. Fix formatting issues.
-
Optional: Do a find-and-replace-all in TS files, if you want to place
@service
anddeclare
on the same line whenever possible.- Find:
@service(\(.*\))?[\n\s]+declare
- Replace:
@service$1 declare
- Find:
-
Run
lint:js:fix
(i.e. autofix fromeslint
andprettier
).
You must pass --type
to indicate what type of project you have.
npx ember-codemod-remove-inject-as-service --type app
npx ember-codemod-remove-inject-as-service --type v1-addon
npx ember-codemod-remove-inject-as-service --type v2-addon
Optional: Specify the project root
Pass --root
to run the codemod somewhere else (i.e. not in the current directory).
npx ember-codemod-remove-inject-as-service --root <path/to/your/project>
The codemod is designed to cover typical cases. It is not designed to cover one-off cases.
To better meet your needs, consider cloning the repo and running the codemod locally.
cd <path/to/cloned/repo>
# Compile TypeScript
pnpm build
# Run codemod
./dist/bin/ember-codemod-remove-inject-as-service.js --root <path/to/your/project>
- Node.js v18 or above
See the Contributing guide for details.
This project is licensed under the MIT License.