eslint plugin angular
Angular项目的Eslint规则,并检查最佳实践,约定或潜在错误。
概括
该存储库将访问ESLINT工具的新规则。仅当您正在开发AngularJS应用程序时,才能使用它。
自0.0.4发布以来,约翰·帕帕(John Papa)指南中定义的一些规则已实施。在下面的描述中,您将拥有指向指南相应部分的链接,以便获得更多信息。
内容
可共享配置的使用
-
将
eslint作为DEV依赖性安装:npm install --save-dev eslint
-
将
eslint-plugin-angular安装为DEV依赖性:npm install --save-dev eslint-plugin-angular
-
通过将其添加到您的
.eslintrc:使用可共享配置:extends : plugin:angular/johnpapa
无共享配置的使用
-
将
eslint作为DEV依赖性安装:npm install --save-dev eslint
-
将
eslint-plugin-angular安装为DEV依赖性:npm install --save-dev eslint-plugin-angular
-
通过将其添加到您的
.eslintrc中来启用插件:plugins : - angular
-
您还可以在
.eslintrc中配置这些规则。本插件中定义的所有规则都必须由“ Angular/”前缀plugins : - angular rules : - angular/controller_name : 0
规则
Eslint-Plugin-angular中的规则分为几类,以帮助您更好地理解其价值。
可能的错误
以下规则检测可能导致错误的模式。
- 避免使用 – 符合型 – 命名方法在示波器对象上定义时避免错误
- 模块 – getter-禁止参考变量的引用模块,需要使用getter语法而代替
angular.module(\'myModule\')(y022) - 模块设定 – 禁止将模块分配给变量(链接到模块 – 盖特(y021)
- 无私人呼叫 – 不允许使用$$的内部角度属性
最佳实践
这些是旨在防止您犯错误的规则。他们要么开出更好的做事方式,要么帮助您避免脚步。
- 组件限制 – 限制每个文件的角组件数(y001)
- 控制器-As-Route-需要在路线或状态中使用控制器(Y031)
- 控制器-AS-VM-要求并指定控制器中的捕获
this(Y032) - 控制器-AS-禁止控制器中
$scope的作业(Y031) - 延期 – 使用
$q(function(resolve, reject){})而不是$q.deferred - di -unused-禁止未使用的DI参数
- 指令限制 – 禁止其他任何指令限制,而不是“ A”或“ E”(Y074)
- 空控制器 – 禁止空控制器
- 无控制器 – 禁止使用控制器(根据组件的第一模式)
- 无内线网板 – 禁止使用内联模板的使用
- 无逻辑 – 保持运行功能清洁和简单(Y171)
- NO -Services-不允许其他角组件的指定服务(用于控制器,过滤器和指令的
$http) - 在观察中 – 需要
$on和$watchderegistration回调,保存在变量中 - 优先组件 –
弃用的角特征
这些规则阻止您使用弃用的角度。
- No -Cookiestore-使用
$cookies代替$cookieStore - 无裁定 – 禁止弃用的指令更换财产
- no-http-callback-禁止
$http方法success()和error()
命名
这些规则可帮助您指定几份命名约定。
- 组件名称 – 要求并指定所有组件名称的前缀
- 常量名称 – 需要并指定所有常数名称的前缀(Y125)
- 控制器名称 – 要求并指定所有控制器名称的前缀(Y123,Y124)
- 指令名 – 要求并指定所有指令名称的前缀(Y073,Y126)
- 工厂名称 – 需要并指定所有工厂名称的前缀(Y125)
- 文件名 – 要求并指定一致的组件名称模式(Y120,Y121)
- filter -name-要求并指定所有过滤名称的前缀
- 模块名称 – 需要并指定所有模块名称的前缀(Y127)
- 提供商名称 – 要求并指定所有提供商名称的前缀(Y125)
- 服务名称 – 需要并指定所有服务名称的前缀(Y125)
- Value -name-要求并指定所有值名的前缀(Y125)
会议
Angular通常提供多种方式来实现某物。这些规则可帮助您为项目定义惯例。
- di -order-要求按字母顺序排序DI参数
- di-需要一致的di语法
- 愚蠢的喷射 – 联合
inject功能应仅由注入值的分配组成以描述块变量 - 函数类型 – 需要并指定组件(\’nature\’或\’匿名\’)的一致函数样式(Y024)(Y024)
- 模块依赖性订单 – 需要一个一致的模块依赖性顺序
- 无服务方法 – 使用
factory()而不是service()(y040) - 一个依赖性按线 – 要求所有DI参数都位于自己的行中
- 休息服务 – 禁止不同的休息服务,并指定“ $ http”,“ $ resource”,“ Restangular”之一
- 守望者执行 – 要求并指定一致的使用
$scope.digest()或$scope.apply()
角包装纸
这些规则可以帮助您强制执行角包装器的使用。
- Angularelemt-使用
angular.element代替$或jQuery - 定义定义 – 使用
angular.isDefinedandangular.isUndefined而不是其他未定义检查 - 文档服务 – 使用
$document代替document(Y180) - foreach-使用
angular.forEach代替本地Array.prototype.forEach - 间隔服务 – 使用
$interval而不是setInterval(y181) - json -intunctions-使用
angular.fromJson和“ angular.tojson”,而不是JSON.parseandJSON.stringify - 日志 – 使用
$log服务代替console方法 - 无角形 – 需要直接使用
angular.mock方法 - 无jQuery-angularelemt-禁止用
jQuery或$包裹angular.element。 - 超时服务 – 使用
$timeout而不是setTimeout(y181) - typecheck -array-使用
angular.isArray代替typeof比较 - typecheck -date-使用
angular.isDate而不是typeof比较 - typecheck功能 – 使用
angular.isFunction而不是typeof的比较 - typecheck -number-使用
angular.isNumber代替比较typeof - typecheck -object-使用
angular.isObject而不是typeof比较 - typecheck -string-使用
angular.isString代替typeof比较 - 窗口服务 – 使用
$window代替window(Y180)
拼错
这些规则可帮助您避免拼写错误。
- ON DESTROY-检查是否有常见的拼写错误$(“销毁”,…)。
需要您的帮助
这是一个开源项目。任何帮助都将非常有用。你可以 :
- 创建问题
- 发送拉的请求
- 写文档
- 添加新功能
- 添加新规则
- 提高质量
- 回复问题
所有发展都发生在development分支。这意味着应向development部门提出所有拉的请求。
如果是时候发布了, @gillespie59会在package.json中碰到版本,创建一个git标签,然后将development分支合并master 。 @gillespie59然后将新版本发布到NPM注册表。
如何创建新规则
我们感谢贡献,以下笔记将在打开拉动请求之前为您提供帮助。
检查问题
看看现有问题。有用的信息可能存在类似的问题。
阅读文档
创建新规则有一些有用的参考。特定有用的是:
- 上下文对象 – 这是添加或修改规则所需的最基本理解。
- 选项模式 – 这是验证配置选项的首选方法。
- 范围 – 这是
context.getScope()返回的范围对象。
您必须创建的文件
-
rules/<your-rule>.js- 带有新规则的JavaScript文件
- filename
<your-rule>正是Eslint Configsangular/<your-rule>中的使用名称 - 看看
angularRule包装器和utils(在rules/utils/)中 – 它们可能使您更容易为您提供 - 添加文档注释以生成使用
gulp docs任务的降价文档
-
test/<your-rule>.js- 编写一些测试并通过
gulp test执行 - 查看覆盖范围报告
coverage/lcov-report/index.html
- 编写一些测试并通过
-
examples/<your-rule>.js- 为文档添加一些示例
- 运行
gulp docs任务以测试示例并更新Markdown文档
-
docs/<your-rule>.md- 由
gulp docs任务生成
- 由
您必须触摸的文件
-
index.js- 添加您的规则
rulesConfiguration.addRule(\'<your-rule>\', [0, {someConfig: \'someValue\'}])
- 添加您的规则
在打开公关之前
- 检查
gulp任务是否有效 - 提交
README.md和docs/<your-rule>.md的更改 - 向
development分支开放master
针对角1或2的规则
我们可以使用ESLINT配置文件中定义的属性,以了解使用哪个版本:Angular 1或Angular 2。基于此属性,您可以为每个版本创建规则。
plugins : - angular rules : angular/controller-name : - 2 - \' /[A-Z].*Controller$/ \' globals : angular : true settings : angular : 2
根据您的规则,您可以通过context对象访问此属性:
//If Angular 2 is used, we disabled the rule if ( context . settings . angular === 2 ) { return { } ; } return { \'CallExpression\' : function ( node ) { } } ;
默认的ESLINT配置文件
这是ESLINT插件中定义的规则的基本配置,以便与@johnpapa提供的指南兼容:
rules : no-use-before-define : - 0
谁使用?
- Argo
- 发电机gillespie59角
- 发电机-NG-POLY
- 杂物
- 发电机沟渠角
团队
| 伊曼纽尔·德米(Emmanuel Demey) | 蒂尔曼·波特福 | Remco Haszing |
