https://github.com/ijlee2/ember-codemod-remove-inject-as-service
Codemod to remove `inject as service`
https://github.com/ijlee2/ember-codemod-remove-inject-as-service
codemod ember-addon ember-codemod emberjs embroider
Last synced: 3 months ago
JSON representation
Codemod to remove `inject as service`
- Host: GitHub
- URL: https://github.com/ijlee2/ember-codemod-remove-inject-as-service
- Owner: ijlee2
- License: mit
- Created: 2024-04-23T07:33:57.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-02T05:20:10.000Z (4 months ago)
- Last Synced: 2025-07-04T21:53:13.153Z (3 months ago)
- Topics: codemod, ember-addon, ember-codemod, emberjs, embroider
- Language: TypeScript
- Homepage:
- Size: 295 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
[](https://github.com/ijlee2/ember-codemod-remove-inject-as-service/actions/workflows/ci.yml)
# ember-codemod-remove-inject-as-service
_Codemod to remove `inject as service`_1
1. [Features](#features)
1. [Usage](#usage)
- [Arguments](#arguments)
- [Limitations](#limitations)
1. [Compatibility](#compatibility)
1. [Contributing](#contributing)
1. [License](#license)1. `@ember/service` provides `service` since [Ember 4.1](https://blog.emberjs.com/ember-4-1-released/). `inject`, which became an alias to `service`, is [planned to be deprecated in v6](https://rfcs.emberjs.com/id/1001-deprecate-named-inject).
## Features
The codemod helps you standardize how you inject services:
- Replace `inject` with `service`1
- Replace `!` with `declare` in TS files2
- Remove `private` and `readonly` keywords in TS files2It preserves your code whenever possible.
1. Replaces `inject as ...` and `service as ...`, too.
2. Matches [the style shown in the Ember Guides](https://guides.emberjs.com/v5.8.0/typescript/core-concepts/services/#toc_using-services).
## Usage
Step 1. Quickly migrate.
```sh
cd
npx ember-codemod-remove-inject-as-service
```Step 2. Fix formatting issues.
- Optional: Do a find-and-replace-all in TS files, if you want to place `@service` and `declare` on the same line whenever possible.
- Find: `@service(\(.*\))?[\n\s]+declare`
- Replace: `@service$1 declare`- Run `lint:js:fix` (i.e. autofix from `eslint` and `prettier`).
### Arguments
You must pass `--type` to indicate what type of project you have.
```sh
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).
```sh
npx ember-codemod-remove-inject-as-service --root
```### Limitations
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.
```sh
cd# Compile TypeScript
pnpm build# Run codemod
./dist/bin/ember-codemod-remove-inject-as-service.js --root
```## Compatibility
- Node.js v20 or above
## Contributing
See the [Contributing](CONTRIBUTING.md) guide for details.
## License
This project is licensed under the [MIT License](LICENSE.md).