jscs-ember-deprecations
This is a JSCS plugin to include errors for features that are deprecated in Ember.js
Installation
npm install jscs-ember-deprecations --save-dev
You'll also need to tell JSCS to load the plugin. Modify your .jscsrc
file to include
"plugins": ,"disallowObjectController": true,"disallowInstanceInInitializer": true,"disallowPrototypeExtension": true,"disallowAtEachLeafNode": true,// ...
If you invoke JSCS with --fix
(see http://jscs.info/overview#cli) some deprecation errors can be fixed automatically.
See Supported deprecations for valid keys
Why
Migrating to a newer Ember version can be tricky if you haven't already gone back and removed all uses of deprecated features. Instead, this plugin intends to enable a migration path in a codebase, where developers can be warned when they use deprecated features.
A sample use case is to:
- Use a tool like Lint Review to automagically annotate pull requests. Developers will be warned if they're using a feature that is deprecated. Put these "aspirational" rules in
.toolbot_jscsrc
- Use
broccoli-jscs
so that JSCS gets run at the same time you're running unit tests. Put rules that are "mandatory" in your codebase's.jscsrc
. Any violations of those rules will result in the test suite failing.
This way a codebase can be gradually brought into compliance over time.
Supported deprecations
Deprecations added in Ember 1.11
-
disallowObjectController
will warn you if you use the deprecatedEmber.ObjectController
. See http://emberjs.com/deprecations/v1.x/#toc_objectcontroller for details. -
disallowInstanceInInitializer
will warn you if you are looking up instances within an initializer. See http://emberjs.com/deprecations/v1.x/#toc_access-to-instances-in-initializers for details.
Deprecations added in Ember 1.12
-
disallowCoreView
will warn you if you use the deprecatedEmber.CoreView
. See https://github.com/emberjs/ember.js/pull/10585 for details. -
disallowEmberTryCatch
will warn you if you use the deprecatedEmber.tryCatch
orEmber.tryCatchFinally
helpers. See https://github.com/emberjs/ember.js/pull/10667 for details. -
disallowEmberRequired
will warn you if you use the deprecatedEmber.required()
helper. See https://github.com/emberjs/ember.js/pull/10668 for details. -
disallowDualGetterSetter
will warn you if you use a dual setter/getter function argument toEmber.computed()
. See http://emberjs.com/deprecations/v1.x/#toc_computed-properties-with-a-shared-getter-and-setter for details.
Deprecations added in Ember 1.13
-
disallowAtEachLeafNode
will warn you if you use the deprecatedfoo.@each
notation. See https://github.com/emberjs/ember.js/pull/11994 for details. -
disallowArrayComputed
will warn you if you use the deprecatedEmber.ArrayComputedProperty
orEmber.arrayComputed()
. See https://github.com/emberjs/ember.js/pull/11403 for details. -
disallowReduceComputed
will warn you if you use the deprecatedEmber.ReduceComputedProperty
orEmber.reduceComputed()
. See https://github.com/emberjs/ember.js/pull/11403 for details. -
disallowEmberCreate
will warn you if you use the deprecatedEmber.create()
function. See http://emberjs.com/deprecations/v1.x/#toc_ember-create for details. -
disallowEmberKeys
will warn you if you use the deprecatedEmber.keys()
function. See http://emberjs.com/deprecations/v1.x/#toc_ember-keys for details. -
disallowEmberOneway
will warn you if you use the deprecatedEmber.oneWay()
function. See http://emberjs.com/deprecations/v1.x/#toc_ember-oneway for details. -
disallowEmberView
will warn you if you use the deprecatedEmber.View
,Ember.LinkView
,Ember.Select
,Ember.ContainerView
, orEmber.CollectionView
classes. See http://emberjs.com/deprecations/v1.x/#toc_ember-view for details. -
disallowPositionalParamsExtend
will warn you if you usepositionalParams
within.extend()
instead of setting it as a static property on the class itself. See http://emberjs.com/deprecations/v1.x/#toc_set-code-positionalparams-code-as-a-static-property-on-the-class for details. -
disallowBeforeObserver
will warn you if you use the deprecatedEmber.addBeforeObserver()
,Ember.removeBeforeObserver()
, orEmber.beforeObserversFor()
functions. Additionally, it will warn you if you use the deprecated.observesBefore()
prototype extenion. Note that.observesBefore()
is also deprecated in disallowPrototypeExtension. See http://emberjs.com/deprecations/v1.x/#toc_beforeobserver for details. -
disallowImmediateObserver
will warn you if you use the deprecatedEmber.immediateObserver
helper. See http://emberjs.com/deprecations/v1.x/#toc_ember-immediateobserver for details. -
disallowArrayController
will warn you if you use the deprecatedEmber.ArrayController
. See http://emberjs.com/deprecations/v1.x/#toc_arraycontroller for details. -
disallowControllerNeeds
will warn you if you're doing dependency injection via theneeds
property on a controller. See http://emberjs.com/deprecations/v1.x/#toc_controller-needs for details. -
disallowFreezableMixin
will warn you if you use the deprecatedEmber.Freezable
mixin. See http://emberjs.com/deprecations/v1.x/#toc_ember-freezeable for details. -
disallowObserverArgumentOrdering
requires thatEmber.observer()
takes callable argument as the final argument. See http://emberjs.com/deprecations/v1.x/#toc_reversed-ember-observer-arguments for details. -
disallowCreateWithMixins
will warn you if you use the deprecatedEmber.Object.createWithMixins
method. See http://emberjs.com/deprecations/v1.x/#toc_ember-createwithmixins for details. -
disallowComputedAny
will warn you if you use the deprecatedEmber.computed.any()
helper. See http://emberjs.com/deprecations/v1.x/#toc_ember-computed-any for details. -
disallowHandlebarsHelpers
will warn you if you use the deprecatedEmber.HTMLBars.makeBoundHelper()
orEmber.Handlebars.registerHelper()
helpers. See http://emberjs.com/deprecations/v1.x/#toc_handlebars-htmlbars-helpers for details.
Deprecations added in Ember 2.0
None. Ember 2.0 removed support for the above deprecations.
Deprecations added in Ember 2.1
-
disallowInitializerArity
will warn you if you have more than 1 argument to an initializer. See http://emberjs.com/deprecations/v2.x/#toc_initializer-arity for details. -
disallowPrivateRegistryProperty
will warn you if you use one of the privateapp.registry.*
deprecations. See http://emberjs.com/deprecations/v2.x/#toc_ember-application-registry-ember-applicationinstance-registry for details. -
disallowAppInstanceContainer
will warn you if you use the privateapp.container.lookup()
depreprecation in an initializer. See http://emberjs.com/deprecations/v2.x/#toc_ember-applicationinstance-container for details. -
disallowDebugMissingArguments
will warn you if you use one of theEmber.warn()
,Ember.deprecate()
,Ember.deprecateFunc()
orEmber.computed.deprecatingAlias()
function without passing in an options object that at a minimum contains anid
property. See http://emberjs.com/deprecations/v2.x/#toc_ember-debug-function-options for details. -
disallowDefaultLayout
will warn you if you use thedefaultLayout
property inside a Component. See http://emberjs.com/deprecations/v2.x/#toc_ember-component-defaultlayout for details. -
disallowCurrentState
will warn you if you use the privatecurrentState
or_currentState
property inside a Component. See http://emberjs.com/deprecations/v2.x/#toc_ember-component-currentstate for details.
Other Ember best practices
disallowPrototypeExtension
will warn you if you are using.property()
,.observes()
orobservesBefore()
. See http://guides.emberjs.com/v1.10.0/configuring-ember/disabling-prototype-extensions/#toc_functions for details.
Deprecations added in Ember 2.3
disallowInjectedContainerAccess
will warn you if you are using the injected container (this.container
). See http://emberjs.com/deprecations/v2.x/#toc_injected-container-access for details.
License
This library is lovingly brought to you by @minichate. It is released under the MIT license.