This codemod is intended to automatically convert your usage of get
, and
getProperties
to use traditional object dot notation as proposed by
emberjs/rfcs#281.
Special thanks to @rwjblue, @iezer, and @tbieniek for reviewing my original test cases.
es5-getter-ember-codemod
itself doesn't need to be installed but you can run it using:
npx github:ember-codemods/es5-getter-ember-codemod ...
You can clone/download this repository or just run the codemods using the command shown in the following example:
npx github:ember-codemods/es5-getter-ember-codemod es5-getter-ember-codemod app/**/*.js
Transforms get()
method calls on objects (only for this
and variables
called controller
or route
).
Before:
this.get('fullName');
controller.get('fullName');
model.get('fullName');
route.get('fullName');
After:
this.fullName;
controller.fullName;
model.get('fullName');
route.fullName;
Transforms Ember.get()
(or get()
from @ember/object
) calls (only
for this
as first argument).
Before:
import Ember from 'ember';
import { get } from '@ember/object'
let foo = get(this, 'foo');
let foo = get(this, 'foo.bar');
let foo = Ember.get(this, 'foo');
let foo = Ember.get(this, 'foo.bar');
let obj = { bar: 'baz' };
let bar = get(obj, 'bar');
After:
import Ember from 'ember';
import { get } from '@ember/object'
let foo = this.foo;
let foo = get(this, 'foo.bar');
let foo = this.foo;
let foo = Ember.get(this, 'foo.bar');
let obj = { bar: 'baz' };
let bar = get(obj, 'bar');
Transforms getProperties()
method calls on objects (only for
destructuring operations and not for nested paths).
Before:
let { foo, bar, baz } = this.getProperties('foo', 'bar', 'baz');
let { foo, barBaz } = this.getProperties('foo', 'bar.baz');
After:
let { foo, bar, baz } = this;
let { foo, barBaz } = this.getProperties('foo', 'bar.baz');
The ember/no-get lint rule is available for enforcing this.