In some parts of your application, you may prefer to disallow certain services from being injected. This can be useful for:
- Deprecating services one folder at a time
- Creating isolation between different parts of your application
This rule disallows injecting specified services under specified paths.
With this example configuration:
[
"error",
{
"paths": ["folder1", "folder2", "folder3"],
"services": ["deprecated-service"],
"message": "Please stop using this service as it is in the process of being deprecated",
},
{
"paths": ["isolated-folder"],
"services": ["service-disallowed-for-use-in-isolated-folder"],
},
{
"services": ["service-disallowed-anywhere"],
},
]
This would be disallowed:
// folder1/my-component.js
class MyComponent extends Component {
@service deprecatedService;
}
Accepts an array of the objects with the following options:
Name | Description | Type | Required |
---|---|---|---|
message |
Optional custom error message to display for violations. | String | |
paths |
Optional list of regexp file paths that injecting the specified services should be disallowed under (omit this field to match any path) (for glob patterns, use ESLint overrides instead). |
String[] | |
services |
List of (kebab-case) service names that should be disallowed from being injected under the specified paths. | String[] | Yes |
- The no-restricted-imports or import/no-restricted-paths rules are the JavaScript import statement equivalent of this rule.
- ember-template-lint has a no-restricted-invocations rule for disallowing component usages.