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 ...
随机推荐
- 解决方案 | tk.entry数字验证(输入框如何保证只能输入数字)
from tkinter import * root = Tk() # 创建文本框 entry = Entry(root) entry.pack() # 设置文本框只能输入数字 entry.confi ...
- UE Spline 样条网格体组件添加碰撞
最近做的一个功能是通过Spline 生成管道模型. 如下图所示: 遇到的一个问题是需要给生成的管路加上碰撞.其中需要两个重要的步骤: 设置SplineMeshComponent的碰撞预设 找到&quo ...
- BootstrapTable 行内编辑解决方案:bootstrap-table-editor
最近开发的一个业务平台,是一个低代码业务平台.其中用到的了bootstrap-table组件.但是bootstrap-table自身不带编辑功能. 通过搜索发现,网上大部分的解决方案都是使用x-edi ...
- 改善中国打开GitHub网站的速度
您可以采取以下措施来改善您在中国打开GitHub网站的速度:1. 使用VPN:通过连接到VPN服务器,您可以避免中国政府对GitHub网站进行的封锁,从而获得更快的访问速度.2. 使用加速器:国内有很 ...
- C# 网络编程:.NET 开发者的核心技能
前言 数字化时代,网络编程已成为软件开发中不可或缺的一环,尤其对于 .NET 开发者而言,掌握 C# 中的网络编程技巧是迈向更高层次的必经之路.无论是构建高性能的 Web 应用,还是实现复杂的分布式系 ...
- 搭建lnmp环境-nginx关联php-fpm (第三步)
永久关闭防火墙sudo systemctl stop firewalldsudo systemctl disable firewall 有两个防火墙!如果上面那个关闭还不行,就继续关这个后重启. ...
- centos7 最小化安装yum不能安装软件解决方案
慕课网神思者老师课常资料带的布署工具中,自带的liunx 系统centos7 yum发现不能安装软件,比如docker 解决方案 首先我们安装好虚拟机启动系统centos7 尝试安装任何软件都会报 ...
- Jmeter强制结束线程
例子:正常的线程是执行2次请求 1.需要实现结果 执行请求1后,判断test1=100,强制结束线程 执行请求1后,判断test1 != 100,继续执行请求2 2. 线程组改造 在请求1后面增加[i ...
- 【VMware VCF】VMware Cloud Foundation Part 06:部署 VI 工作负载域。
VMware Cloud Foundation 标准架构中,管理域和 VI 工作负载域需要分开部署,管理域是初始构建(Bring-up)中部署的一个工作负载域并且只有一个,管理域专门用于承载管理相关组 ...
- 6、SpringBoot2之整合Mybatis
创建名为springboot_mybatis的新module,过程参考3.1节 6.1.引入相关依赖 注意:虽然本文使用的是 spring boot 2.7.18 和 MySQL 5.7 ,但是出于可 ...