eslint plugin angular

其他类别 2025-08-19

eslint plugin angular

Angular项目的Eslint规则,并检查最佳实践,约定或潜在错误。

概括

该存储库将访问ESLINT工具的新规则。仅当您正在开发AngularJS应用程序时,才能使用它。

自0.0.4发布以来,约翰·帕帕(John Papa)指南中定义的一些规则已实施。在下面的描述中,您将拥有指向指南相应部分的链接,以便获得更多信息。

内容

  • 可共享配置的使用
  • 无共享配置的使用
  • 规则
  • 需要您的帮助
  • 如何创建新规则
  • 默认的ESLINT配置文件
  • 谁使用?
  • 团队

可共享配置的使用

  1. eslint作为DEV依赖性安装:

    npm install --save-dev eslint
  2. eslint-plugin-angular安装为DEV依赖性:

    npm install --save-dev eslint-plugin-angular
  3. 通过将其添加到您的.eslintrc :使用可共享配置:

     extends : plugin:angular/johnpapa 

无共享配置的使用

  1. eslint作为DEV依赖性安装:

    npm install --save-dev eslint
  2. eslint-plugin-angular安装为DEV依赖性:

    npm install --save-dev eslint-plugin-angular
  3. 通过将其添加到您的.eslintrc中来启用插件:

     plugins :
      - angular
  4. 您还可以在.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$watch deregistration回调,保存在变量中
  • 优先组件 -

弃用的角特征

这些规则阻止您使用弃用的角度。

  • 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.isDefined and angular.isUndefined而不是其他未定义检查
  • 文档服务 - 使用$document代替document (Y180)
  • foreach-使用angular.forEach代替本地Array.prototype.forEach
  • 间隔服务 - 使用$interval而不是setInterval (y181)
  • json -intunctions-使用angular.fromJson和“ angular.tojson”,而不是JSON.parse and JSON.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/.js
    • 带有新规则的JavaScript文件
    • filename 正是Eslint Configs angular/中的使用名称
    • 看看angularRule包装器和utils (在rules/utils/ )中 - 它们可能使您更容易为您提供
    • 添加文档注释以生成使用gulp docs任务的降价文档
  • test/.js
    • 编写一些测试并通过gulp test执行
    • 查看覆盖范围报告coverage/lcov-report/index.html
  • examples/.js
    • 为文档添加一些示例
    • 运行gulp docs任务以测试示例并更新Markdown文档
  • docs/.md
    • gulp docs任务生成

您必须触摸的文件

  • index.js
    • 添加您的规则rulesConfiguration.addRule('', [0, {someConfig: 'someValue'}])

在打开公关之前

  • 检查gulp任务是否有效
  • 提交README.mddocs/.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
下载源码

通过命令行克隆项目:

git clone https://github.com/EmmanuelDemey/eslint-plugin-angular.git