Skip to content

ijlee2/ember-codemod-remove-inject-as-service

Repository files navigation

This project uses GitHub Actions for continuous integration.

ember-codemod-remove-inject-as-service

Codemod to remove inject as service1

  1. Features
  2. Usage
  3. Compatibility
  4. Contributing
  5. License

1. @ember/service provides service since Ember 4.1. inject, which became an alias to service, is planned to be deprecated in v6.

Features

The codemod helps you standardize how you inject services:

  • Replace inject with service1
  • Replace ! with declare in TS files2
  • Remove private and readonly 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.

Usage

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

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>

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.

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>

Compatibility

  • Node.js v18 or above

Contributing

See the Contributing guide for details.

License

This project is licensed under the MIT License.