前言

不熟悉 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. oeasy教您玩转linux010206toilet

    我们来回顾一下 上一部分我们都讲了什么? 用apt查询并下载了figlet 玩了一下字符画 设置了字符画的字体 但是没有修改颜色 这次我们来找找另一个命令toilet apt search toile ...

  2. [oeasy]python0035_ 整合shell编程_循环_延迟_清屏

    ​ 整合shell编程 回忆上次内容 用\r 可以让输出位置回到行首 原位刷新时间 如果想要的是大字符效果 需要使用 figlet 但同时还希望能刷新 ​ 编辑 这可能吗? 建立脚本 我们得熟悉一下s ...

  3. git常用代码

    //当前文件夹删除的文件恢复git reset Head .// 查看所有分支git branch// 查看本地分支 对应的远程分支git branch -vv//git branch -vv//创建 ...

  4. docker基础学习总结

    docker是一个快速安装部署的容器,快捷简单.可以隔离是他的优点 docker也拥有仓库:dockerhub,存储和管理镜像的平台 我们利用docker安装时就是在里面下载镜像,镜像不仅包含应用本身 ...

  5. FFmpeg开发笔记(四十二)使用ZLMediaKit开启SRT视频直播服务

    ​<FFmpeg开发实战:从零基础到短视频上线>一书在第10章介绍了轻量级流媒体服务器MediaMTX,通过该工具可以测试RTSP/RTMP等流媒体协议的推拉流.不过MediaMTX的功能 ...

  6. 【vue3】详解单向数据流,大家千万不用为了某某而某某了。

    总览 Vue3 的单向数据流 尽信官网,不如那啥. vue的版本一直在不断更新,内部实现方式也是不断的优化,官网也在不断更新. 既然一切皆在不停地发展,那么我们呢?等着官网更新还是有自己的思考? 我觉 ...

  7. 【JavaWeb】 接口鉴权

    一年前写过一篇,叫Webservice校验机制,叫法不太对,就是接口鉴权 https://www.cnblogs.com/mindzone/p/15078436.html 这东西就是说,你提供给外部的 ...

  8. 使用 abortNavigation 阻止导航

    title: 使用 abortNavigation 阻止导航 date: 2024/8/3 updated: 2024/8/3 author: cmdragon excerpt: 摘要:在Nuxt3中 ...

  9. 强化学习中性能的评价指标到底应该如何选择:1.平均得分,2.平均Q值

    <Human-level control through deep reinforcement learning> 是深度强化学习的开创性论文,对于强化学习算法的性能评价在文章中给出了两种 ...

  10. 后端开发学习敏捷需求-->专题的目标与价值成效

    专题的目标与价值成效 什么是专题 公司或企业为了抓住业务机会或者解决痛点问题,而采取的具体的行动和举措 专题的目标分析 1.业务调研了解目标的预期 利用5W2H来进行专题分析 what--是什么?目的 ...