CAC 源码阅读(通用部分)
今天所阅读的库为CAC,在分析一个库时,经常会发现有很多通用的配置文件,那么我们首先分析一下这些通用的配置。
项目目录结构
cac
├─.editorconfig ------------------------------ 保持不同IDE规范编码风格 [【官网】](https://editorconfig.org/)
├─.gitattributes ------------------------------ 可以设置文件的属性,如行尾字符
├─.gitignore ---------------------------------- 配置`git`忽略不想提交的文件
├─.prettierrc ---------------------------------- prettier 代码格式化工具配置项
├─circle.yml ---------------------------------- Circle CI持续集成配置
├─index-compat.js -------------------------- 项目主入口
├─jest.config.js ------------------------------ jest 配置文件
├─LICENSE ---------------------------------- 开源协议文件
├─mod.js -------------------------------------- 兼容deno
├─mod.ts -------------------------------------- 兼容deno
├─mod_test.ts
├─package.json ------------------------------ npm 项目描述文件
├─README.md ------------------------------ 项目简介
├─rollup.config.js ----------------------------- rollup 配置文件(打包工具)
├─test.js
├─tsconfig.json
├─yarn.lock
├─src -------------------------------------------- 项目主目录
| ├─CAC.ts
| ├─Command.ts
| ├─deno.ts
| ├─index.ts
| ├─node.ts
| ├─Option.ts
| ├─utils.ts
| ├─__test__
| | ├─index.test.ts
| | ├─__snapshots__
| | | └index.test.ts.snap
├─scripts ---------------------------------------- 项目中用到的脚本文件
| └build-deno.ts
├─examples ------------------------------------ 项目示例
| ├─basic-usage.js
| ├─command-examples.js
| ├─command-options.js
| ├─dot-nested-options.js
| ├─help.js
| ├─ignore-default-value.js
| ├─negated-option.js
| ├─sub-command.js
| └variadic-arguments.js
├─.github
| ├─FUNDING.yml
| └ISSUE_TEMPLATE.md
├─.git ---------------------------------------------- git的相关配置,如git的钩子函数
.editorconfig 是干嘛的
- 保持不同IDE规范编码风格 【官网】
- 如win环境下换行符为CRLF,mac环境下是LF
.gitattributes 是干嘛的
- 为了在
git commit阶段保证文件的属性一致性,如行尾字符,行尾是否换行等
持续集成是如何实现的
-
通过配置
git hook触发对应的流程,如自动化测试,然后通过Jenkins一类的工具来触发自动化构建和部署 -
circle.yml 是如何配置的
单元测试环境是如何搭建的
-
ts-jest 是解决什么问题的
jest是一个JavaScript的测试框架,它集成了断言+测试的功能, 无须组合其他工具即可实现单元测试。- 如果没有 ts-jest 的话 你会搭建基于 ts 的 jest 的环境嘛? (@TODO)
- 写个 demo? (@TODO)
- 如果没有 ts-jest 的话 你会搭建基于 ts 的 jest 的环境嘛? (@TODO)
-
jest.config.js 这几个字段都有什么用?
package.json 里面的字段都是干嘛的
- 官网配置文档
- 发布一个库需要用到哪些字段
name包名version版本号author作者名称license开源协议
写一个库的 README 需要哪几个部分?
- 介绍这个库是为了解决什么问题的
- 这个库有什么特点
- 这个库的一些安装,使用方法
- 提供相关的
example让读者更好的理解和使用 - 如果读者想提交PR,以怎么样的方式去提交
- 有哪些可以快速生成 readme 的库