前言

不熟悉 Prettier, ESLint, Stylelint 的朋友可以先看这篇 工具 – Prettier、ESLint、Stylelint

首先,Angular 没有 built-in 支持 Prettier、ESLint、Stylelint 中的任何一个。

Angular CLI 唯一做的事情是提供了一个接口,然后让我们去实现。

这个接口是这样的,有一个 ng lint command,输入它后会链接到 angular.json 里的 lint 配置

然后启动 builder,这个 builder 就是我们要去实现的,builder 里面大致上就是去跑 eslint --fix 之类的 command。大体上是这样啦。

社区贡献了 angular-eslint for ESLint,这个非常多人用,可靠。

Stylelint 则有一个 weekly download 仅 1.2k 的 Angular ESLint + Stylelint Linter,感觉靠不住啊...

Prettier

如果只是想通过 Command-line 或者 VS Code Plugin 的方式使用 Prettier,那按照这篇 工具 – Prettier、ESLint、Stylelint 做就可以了。

因为 Command-line 和 VS Code Plugin 都不需要 bundler 支持嘛。

那如果想在 Angular ng build 时自动跑 Prettier 的话,那是不可能的。还在自己在 ng build 之前跑个 Command-line Prettier 吧。

唯一比较接近的做法是使用 ESLint + Prettier。

如果 Angular 要使用 Prettier plugin sort imports 需要做一些额外的配置

添加 importOrderParserPlugins

typescript 和 decorators-legacy 一定要,classProperties 我不是很确定。

ESLint

Angular 虽然没用 built-in ESLint,但社区提供的实现 (angular-eslint) 非常 Angular,所以基本上可以把它当 built-in 的来使用。

When to Use Eslint?

创建项目

ng new eslint --ssr=false --routing=false --skip-tests --style=scss

把 App 组件 selector 从 'app-root' 换成 uppercase 'APP-ROOT'

运行 ng serve

效果

是的,大小写完全不会影响最终效果。

但是!不规范啊。

Angular Coding Style 已经写明,selector 要用 kebab-case。

尽管不一定非要遵循 Angular Coding Style 才算正确,但如果我们本身没用 Coding Style 的话,跟随它总比完全没有 Coding Style 来的更容易维持代码整洁。

angular-eslint 就是一个能帮助我们检测代码是否符合 Angular Coding Style 的利器。

Setup angular-eslint

安装 angular-eslint

ng add @angular-eslint/schematics

它会创建 .eslintrc.json,还有在 angular.json 和 package.json 添加一些配置。

运行 command

ng lint

ng lint 是 Angular CLI 特别保留给 linting tools 的 command,不一定要是 ESLint,只要是 linting tool 都可以配置使用。

效果

安装 VS Code ESLint 插件

效果

ng lint 和 ng serve

ng serve 和 ng lint 是完全无关的,如果我们希望在 ng serve 之前做一轮 ESLint 检测,可以在 package.json 这样配置

有人建议过 Angular Team 把这个配置交给 Angular CLI 负责,但是最后 Angular Team 婉拒了这个建议。

ESLint 和 Prettier

angular-eslint 没有搭配 Prettier

我们可以自己加

yarn add prettier --dev
yarn add eslint-config-prettier --dev
yarn add eslint-plugin-prettier --dev

接着运行 ng lint 就可以了。

ESLint for Application and Library

参考 Docs – Using ESLint by default when generating new Projects within your Workspace

如果一个 workspace 里有多个 Application 或 Library 则需要特别处理。

在创建 Application 和 Librayr 之前添加 @angular-eslint

ng add @angular-eslint/schematics

接着使用

ng g @angular-eslint/schematics:application my-app --skip-tests --ssr=false --style=scss

来创建 Application

使用

ng g @angular-eslint/schematics:library stooges --prefix=stg

来创建 Library。

Stylelint

和 Prettier 一样,如果只是想通过 Command-line 或者 VS Code Plugin 的方式使用 Stylelint,那按照这篇 工具 – Prettier、ESLint、Stylelint 做就可以了。

那如果想像 ESLint 那样通过 ng lint 启动的话...也不是不行,只是这个插件 Angular ESLint + Stylelint Linter 使用人数太少,感觉不太可靠。

所以个人建议还是通过 Command-line 和 VS Code Plugin 的方式使用 Stylelint 就好。

目录

上一篇 Angular 18+ 高级教程 – Library

下一篇 Angular 18+ 高级教程 – 学以致用

想查看目录,请移步 Angular 18+ 高级教程 – 目录

喜欢请点推荐,若发现教程内容以新版脱节请评论通知我。happy coding

Angular 18+ 高级教程 – Prettier, ESLint, Stylelint的更多相关文章

  1. Siki_Unity_2-9_C#高级教程(未完)

    Unity 2-9 C#高级教程 任务1:字符串和正则表达式任务1-1&1-2:字符串类string System.String类(string为别名) 注:string创建的字符串是不可变的 ...

  2. Pandas之:Pandas高级教程以铁达尼号真实数据为例

    Pandas之:Pandas高级教程以铁达尼号真实数据为例 目录 简介 读写文件 DF的选择 选择列数据 选择行数据 同时选择行和列 使用plots作图 使用现有的列创建新的列 进行统计 DF重组 简 ...

  3. ios cocopods 安装使用及高级教程

    CocoaPods简介 每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如Java语言的Maven,nodejs的npm.随着iOS开发者的增多,业界也出现了为iOS程序提供依赖管理的工具,它的 ...

  4. 【读书笔记】.Net并行编程高级教程(二)-- 任务并行

    前面一篇提到例子都是数据并行,但这并不是并行化的唯一形式,在.Net4之前,必须要创建多个线程或者线程池来利用多核技术.现在只需要使用新的Task实例就可以通过更简单的代码解决命令式任务并行问题. 1 ...

  5. 【读书笔记】.Net并行编程高级教程--Parallel

    一直觉得自己对并发了解不够深入,特别是看了<代码整洁之道>觉得自己有必要好好学学并发编程,因为性能也是衡量代码整洁的一大标准.而且在<失控>这本书中也多次提到并发,不管是计算机 ...

  6. 分享25个新鲜出炉的 Photoshop 高级教程

    网络上众多优秀的 Photoshop 实例教程是提高 Photoshop 技能的最佳学习途径.今天,我向大家分享25个新鲜出炉的 Photoshop 高级教程,提高你的设计技巧,制作时尚的图片效果.这 ...

  7. 展讯NAND Flash高级教程【转】

    转自:http://wenku.baidu.com/view/d236e6727fd5360cba1adb9e.html 展讯NAND Flash高级教程

  8. Net并行编程高级教程--Parallel

    Net并行编程高级教程--Parallel 一直觉得自己对并发了解不够深入,特别是看了<代码整洁之道>觉得自己有必要好好学学并发编程,因为性能也是衡量代码整洁的一大标准.而且在<失控 ...

  9. [转帖]tar高级教程:增量备份、定时备份、网络备份

    tar高级教程:增量备份.定时备份.网络备份 作者: lesca 分类: Tutorials, Ubuntu 发布时间: 2012-03-01 11:42 ė浏览 27,065 次 61条评论 一.概 ...

  10. Angular CLI 使用教程指南参考

    Angular CLI 使用教程指南参考 Angular CLI 现在虽然可以正常使用但仍然处于测试阶段. Angular CLI 依赖 Node 4 和 NPM 3 或更高版本. 安装 要安装Ang ...

随机推荐

  1. UE4 WebUI使用指南2-通信

    前面一篇WebUI的文章讲述的WebUI插件的下载,开启,在UE中创建,加载网页等. 本文继续讲述通过WebUI,UE和网页实现双向通信的实现思路. 一点说明 由于WebUI 使用的浏览器内核并不是最 ...

  2. [oeasy]python0008_输出h字符_REPL_引号_括号_什么是函数

    输出h字符_REPL_引号_括号_什么是函数 回忆上次内容 上次 继续在游乐场里 玩耍 键盘按键 作用 ↑ 上一条指令 ↓ 下一条指令 ← 光标 向左移动 一格 → 光标 向右移动 一格 ctrl + ...

  3. oeasy 教您玩转linux 010303文件管理器 nautilus

    我们来回顾一下 上一部分我们都讲了什么? 讲了火狐 火狐的位置 用命令行打开多个网址 火狐的升级 火狐桌面建立快捷方式 我们可以知道桌面快捷方式文件的名称么? 从文件管理器到命令行 按住文件 拖动到t ...

  4. oeasy教您玩转 linux 010212 管道 pipe

    上一部分我们都讲了什么? 牛说cowsay 牛可以有各种表情 可以自定义眼睛 可以变成各种别的小动物 可以说也可以想cowthink 我们也想让牛说出字符画的感觉 回顾字符画 下载figlet和toi ...

  5. 使用.NET6实现动态API

    ApiLite是基于.NET6直接将Service层生成动态api路由,可以不用添加Controller,支持模块插件化,在项目开发中能够提高工作效率,降低代码量. 开发环境 .NET SDK 6.0 ...

  6. WebAPI规范设计——违RESTful

    本文首先简单介绍了几种API设计风格(RPC.REST.GraphQL),然后根据实现项目经验提出WebAPI规范设计思路,一些地方明显违反了RESTful风格,供大家参考! 一.几种设计风格介绍 1 ...

  7. 网络基础 登录对接CAS-跨域导致的一个意想不到的Bug

    登录对接CAS-跨域导致的一个意想不到的Bug 背景描述 业务需求是平台登录,接入Cas验证 问题描述 平台登录页,点击登录方式,跳转Cas登录页,提交登录请求,结果发现,又返回平台登录页: 再次点击 ...

  8. Django model 层之聚合查询总结

    Django model 层之聚合查询总结 by:授客 QQ:1033553122 实践环境 Python版本:python-3.4.0.amd64 下载地址:https://www.python.o ...

  9. 跟着ChatGPT学习设计模式 - 工厂模式

    1. 前言 在工作过程中,越发觉得设计模式的重要性.经常会有人说工作5年的人,大学生随便培训1-2月也能做同样的工作,没错,大学生的确可以做. 但其写的代码,可维护性.可扩展性.添加新功能时方便还是简 ...

  10. 系动词&使役动词

    系动词 系动词的作用就是赋值 I am a rabbit 把 a rabbit赋值给i我 我是一只兔子 The rabbit is smart 这兔子是聪明的 smart赋值给兔子 系动词连系的方式, ...