Angular 18+ 高级教程 – Prettier, ESLint, Stylelint
前言
不熟悉 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
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+ 高级教程 – 目录
喜欢请点推荐,若发现教程内容以新版脱节请评论通知我。happy coding
Angular 18+ 高级教程 – Prettier, ESLint, Stylelint的更多相关文章
- Siki_Unity_2-9_C#高级教程(未完)
Unity 2-9 C#高级教程 任务1:字符串和正则表达式任务1-1&1-2:字符串类string System.String类(string为别名) 注:string创建的字符串是不可变的 ...
- Pandas之:Pandas高级教程以铁达尼号真实数据为例
Pandas之:Pandas高级教程以铁达尼号真实数据为例 目录 简介 读写文件 DF的选择 选择列数据 选择行数据 同时选择行和列 使用plots作图 使用现有的列创建新的列 进行统计 DF重组 简 ...
- ios cocopods 安装使用及高级教程
CocoaPods简介 每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如Java语言的Maven,nodejs的npm.随着iOS开发者的增多,业界也出现了为iOS程序提供依赖管理的工具,它的 ...
- 【读书笔记】.Net并行编程高级教程(二)-- 任务并行
前面一篇提到例子都是数据并行,但这并不是并行化的唯一形式,在.Net4之前,必须要创建多个线程或者线程池来利用多核技术.现在只需要使用新的Task实例就可以通过更简单的代码解决命令式任务并行问题. 1 ...
- 【读书笔记】.Net并行编程高级教程--Parallel
一直觉得自己对并发了解不够深入,特别是看了<代码整洁之道>觉得自己有必要好好学学并发编程,因为性能也是衡量代码整洁的一大标准.而且在<失控>这本书中也多次提到并发,不管是计算机 ...
- 分享25个新鲜出炉的 Photoshop 高级教程
网络上众多优秀的 Photoshop 实例教程是提高 Photoshop 技能的最佳学习途径.今天,我向大家分享25个新鲜出炉的 Photoshop 高级教程,提高你的设计技巧,制作时尚的图片效果.这 ...
- 展讯NAND Flash高级教程【转】
转自:http://wenku.baidu.com/view/d236e6727fd5360cba1adb9e.html 展讯NAND Flash高级教程
- Net并行编程高级教程--Parallel
Net并行编程高级教程--Parallel 一直觉得自己对并发了解不够深入,特别是看了<代码整洁之道>觉得自己有必要好好学学并发编程,因为性能也是衡量代码整洁的一大标准.而且在<失控 ...
- [转帖]tar高级教程:增量备份、定时备份、网络备份
tar高级教程:增量备份.定时备份.网络备份 作者: lesca 分类: Tutorials, Ubuntu 发布时间: 2012-03-01 11:42 ė浏览 27,065 次 61条评论 一.概 ...
- Angular CLI 使用教程指南参考
Angular CLI 使用教程指南参考 Angular CLI 现在虽然可以正常使用但仍然处于测试阶段. Angular CLI 依赖 Node 4 和 NPM 3 或更高版本. 安装 要安装Ang ...
随机推荐
- 【Azure Developer】一个复制Redis Key到另一个Redis服务的工具(redis_copy_net8)
介绍一个简单的工具,用于将Redis数据从一个redis端点复制到另一个redis端点,基于原始存储库转换为.NET 8:https://github.com/LuBu0505/redis-copy- ...
- 一款开源免费功能强大的一站式自动化运维及自动化部署平台orion-ops
一站式自动化运维及自动化部署平台, 使用多环境的概念, 提供了机器管理.机器监控报警.Web终端.WebSftp.机器批量执行.机器批量上传.在线查看日志.定时调度任务.应用环境维护.应用构建及发布任 ...
- oeasy教您玩转vim - 31 - # 文字区块
文字区块 回忆上节课内容 上上次讲的翻页 上次先让屏幕位置固定,移动光标 H- Head 移动到屏幕的顶端 M- Middle 移动到屏幕的中间 L- Low 移动到屏幕的底部 然后让光标固定,移 ...
- JDBC第二天:防sql攻击
1 什么是SQL攻击 在需要用户输入的地方,用户输入的是SQL语句的片段,最终用户输入的SQL片段与我们DAO中写的SQL语句合成一个完整的SQL语句!例如用户在登录时输入的用户名和密码都是为SQL语 ...
- java程序设计期末复习总结&复盘
java复习 java的特点:简单.面向对象.可移植.跨平台.分布式.多线程.稳定安全.高性能 一个数组可以存放许多不同类型的数值. (F) StringBuffer类是线程安全的,StringBui ...
- ArcGIS for Android入门(Java):初体验
准备工作 开发工具:Android Studio 环境:jdk 11 (首次接触安卓开发,可能有的地方不太对,还请给位大佬多多指点) 项目搭建 打开Android Studio,点击New Proje ...
- Apache DolphinScheduler 社区 3 月月报
各位热爱 DolphinScheduler 的小伙伴们,DolphinScheduler 社区月报开始更新啦!这里将记录 DolphinScheduler 社区每月的重要更新. 社区为 Dolphin ...
- 2024 年了,IT 运维监控系统都有哪些推荐?
大浪淘沙,2024 年的今天,市面上很多监控系统慢慢淡出了大家的视野,而一些新的监控系统也逐渐崭露头角.今天我们就来看看 2024 年的当下,哪些 IT 运维监控系统最值得关注. Prometheus ...
- ChatGLM
ChatGLM: A Family of Large Language Models from GLM-130B to GLM-4 All Tools(2024.7.16) Code:https:// ...
- tar分段压缩导入
压缩 ll drwxrwxrwx 4 postgres postgres 20480 Oct 10 14:54 gitee-repo #分段压缩 tar czf - gitee-repo/ | spl ...