eslint-plugin-goog
Version:
ESLint plugin for Closure Library
104 lines (73 loc) • 2.47 kB
Markdown
***
[](https://eslint.org) plugin for [Closure Library](https://github.com/google/closure-library).
1) Install the package:
```
npm i eslint-plugin-goog --save-dev
```
2) Specify "goog" as a plugin in your .eslintrc:
```
{
plugins: [
"goog"
]
}
```
3) Enable all of the rules that you would like to use in your .eslintrc:
```
{
rules: [
"goog/no-undeclared-deps": ...
]
}
```
Use this rule to detect usage of undeclared dependencies (missed `goog.require(<namespace>)` expression).
**Options**:
```
{
domains: string[], // List of root namespaces that rule will use for report as undeclared
excludedPatterns: string[], // List of patterns (string literally or RegExp pattern string) that will be excluded from reports
knownNamespaces: string[] // List of provided namespaces that rule will be able to fix
}
```
Also `domains` and `knownNamespaces` can be specified by shared settings.
**Caveat**: only namespaces that are given by options `knownNamespaces` will be auto fixed.
Plugin provides module `nsUtils` to ease retrieving of known namespaces, e.x.:
```javascript
// Your .eslintrc.js
const {nsUtils} = require('eslint-plugin-goog');
const knownNamespaces = [
...nsUtils.findByPattern(path.join(__dirname , 'myapp', '**', '*.js')),
...nsUtils.findByPattern(path.join(__dirname , 'node_modules', 'zombiebox', '**', '*.js')),
];
module.exports = {
// ...
rules: [
'goog/no-undeclared-deps': ['error', {
domains: ['myapp'],
knownNamespaces
}]
]
}
```
Use this rule to detect when declared dependencies (`goog.require(<namespace>)` expression) are unused in code.
**Options**:
```
{
domains: string[] // List of root namespaces that rule will use for report as undeclared
}
```
Also `domains` can be specified by shared settings.
Use this rule to prevent duplicates in `goog.require` or `goog.provide` expressions.
Use this rule to achieve right order of `goog` expressions. This rule does:
* Checks that `goog` expressions are sorted alphabetically by its namespace;
* Checks that `goog` expressions are at top of a file;
* Checks that `goog.provide` goes before `goog.require`;
* Checks that there are no additional code or comments between `goog` expressions;
* Restricts nested `goog` expressions (parent AST node should have `Program` type).