The configuration for ember-template-lint
we use across
all of our Ember.js projects.
Install the dependencies:
# Install `ember-template-lint` itself and our config
yarn add -D ember-template-lint @clark/ember-template-lint-config
# Remove the linting integration into ember-cli
yarn remove ember-cli-template-lint
Update or create the .template-lintrc.js
:
'use strict';
module.exports = {
plugins: ['@clark/ember-template-lint-config'],
extends: 'clark:octane'
};
Add the lint:hbs
script to the package.json
, in case it does not exist yet:
{
"name": "my-awesome-app",
"scripts": {
"lint:hbs": "ember-template-lint ."
},
"devDependencies": {
"@clark/ember-template-lint-config": "^0.1.0",
"ember-template-lint:" "^1.8.1"
}
}
Don't forget to run yarn lint:hbs
in CI!
This package exports two configurations you can extend from.
This is the recommended default configuration to use. It extends the official
octane
config and makes the following changes to it:
no-curly-component-invocation
: whitelist all known helperssimple-unless
: allow to use a single, simple helper in{{unless}}
This config extends clark:octane
and disables a few rules, so
that the linter does not go crazy on code that was written pre-Octane. Use this
config for legacy packages, when clark:octane
throws too many, not easily
fixable errors. Ideally though, migrate your code.
The following rules are disabled:
no-implicit-this
: prefix context access withthis.
and component arguments with@
no-curly-component-invocation
: migrate curly component invocation to angle bracket invocationsno-action
: use the{{on}}
modifier and(fn)
helper over{{action}}
ember-cli-template-lint
is a wrapper around the actual ember-template-lint
,
that integrates it into the linting pipeline of ember-cli
. We strongly agree
with RFC #121 "Remove ember-cli-eslint
" and believe that the
linting pipeline, as it is implemented in ember-cli
, is hacky and should not
run alongside the browser tests.
Instead we run all our lint jobs as extra steps in CI.