本人在做React的开发都是基于React官方提供的脚手架CRA,CRA初始化的内容都是很基础的,仅仅只安装了必须的react的依赖和基础的项目目录,而我们实际的开发过程中,搭建一个初始项目还需要安装UI库、路由组件、状态管理库、工具库,请求库等,以及对基础工具函数的封装,请求库的封装等一系列二次封装工作,当然这些封装是可以每次都Copy的,对于团队而言这些工作都是重复的工作,那有没有可能自定义CRA脚手架,初次init的时候就包含了所以以上的基本工作。其实就是懒,想要省事,对个人对团队而言都可以减少重复工作以及统一大家的类库信息。
在我仔细查看了CRA的官方文档后发现了:
===============================================================================================================================
这个内容可以自定义CRA的模版,只需要执行:npx create-react-app my-app --template [template-name],模版肯定是需要自己自定义了,这需要遵守CRA的规则:
新建立的template项目里必须要包含这些信息和目录,我们可以通过进入本地template目录进行调试或者直接使用,也可以通过npm管理我们的template,如果是给团队使用,建议还是上传到私有的npm仓库。解释下,目录里面的package.json大部分是npm包相关信息,其中files字段包含的是可以被推送到npm服务器的文件夹或者文件,当然package.json以及REAEME.md等一些文件是自动包含在推送内的,所以无需特意写在里面,这里你也可以加上dependencied和devdependencied字段,到时会一起会和下面的template.json的字段合并的:
下面的template.json就是你补充的信息,这里你可以添加自己的dependencied字段信息,script等,当然template.json的字段也是固定的,详情可以去官网查看,以下是我这边需要添加的lib,react相关的基础依赖例如react和react-dom以及unit test相关的lib在CRA初始模版里面已经存在了,如果对版本没有要求可以不需要再进行add,我这边是需要特定的17.0.2版本:
除了对lib的补充,也可以添加src里面的目录分类以及相应的功能code,例如我自己在src里面添加的:
以上是一些基本介绍,下面就是完整的步骤:
第一步:以CRA推荐的格式cra-template-[template-name],以这个格式命名新建一个项目目录,例如我这边的命名cra-template-ASL。
第二步:按照CRA的template需要包含的信息构建项目内容,重要的是对package.json和template.json的补充,可以参考我上面的配置,自定义的内容则是按照自己的需要添加
第三步:对template项目进行test,可以通过执行npx create-react-app my-app --template file:../path/to/your/template/cra-template-[template-name],file:../path/to/your/template/cra-template-[template-name]是你template项目的本地path,钥要是一起正常,就可以init my-app项目目录了,里面包含了tēmplate项目里面的所有信息了:
init后的项目目录,包含了template项目里面的所有信息:
如果只是个人使用,可以就在本地调试使用template项目就可以了,如果要方便团队使用,那需要上传template项目到npm仓库,npm仓库上已经有许多个人的cra-template的项目了。
关于使用npm管理包,大家自行百度,简单的上传还是比较简单的,如果正常上传到了npm了,那后面只需要执行cra-template-[template-name],可以只取template-name来安装
自定义CRA的template的基础教程就到这里了