从零开始开辟一个react脚手架(二)

上一篇已开端整了个kkk-react,这一篇不写代码,大略讲解下create-react-app的部份源码。

前沿:科普下看源码的思绪。以本人看过N多源码的经验总结,想要看这类脚手架或许npm包的源码,第一步就是看package.json的设置,寻常看的就是main.js和script。main.js就是引入npm包后,取的实在的js文件地点。script就是脚手架敕令,相似下面create-react-app

 "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },

脚手架看script,npm包看main。
找到script以后,就4个敕令,第一个start就是开启当地效劳,build就是打包文件,test没细致看我预计就是代码搜检吧,由于我们公司的test就是eslint搜检,eject相似于天生设置文件之类的,由于他的设置走的是api,不是webpack设置文件,这个敕令能够就是天生出对应的webpack文件(背面的两个没细看,没必要太care)。
弄清script以后,就去脚手架源代码内里找package.json。去这个文件内里看bin设置,说直接一点,为嘛script内里的敕令能其结果呢,就是你装置一个包以后,假如这个包内里有bin设置,那末npm就会去node_modules内里的.bin目次下天生出对应的实行敕令文件

《从零开始开辟一个react脚手架(二)》

作为一个脚手架东西现实上是能够分为两部份的。
一是天生对应的dir和file,搭建好环境,让我们能直接跑起项目。 这一部份比较简朴,我们到末了再来完成这一步(等我们完成本身的脚手架东西以后),相似create-create-app myApp之类的。
二我觉得才是症结,是种种敕令的完成,npm run start之类,接下来我会简朴的解读下这一步的源码。

create-react-app用的是分包治理lerna,这里就不讲了。直接找到react-scripts目次内里的package.json,

《从零开始开辟一个react脚手架(二)》

能够看到虽然script内里有4条敕令,但实在就是一个react-scripts敕令,背面的只是参数。
一切运转的react-scripts start|test|build,实在都是在实行react-scripts.js。

《从零开始开辟一个react脚手架(二)》

看源码实在剖析process.arg,然后剖析出参数,末了实行对应的scripts目次下的文件,我们实行的是start,就是start.js文件。

接下来就是剖析这个start.js源码了。
这内里有许多参数剖断,代办处置惩罚,种种细节处置惩罚,抛开这些,中心实在就两个函数
一 createCompiler,这个就是简朴点就是 new webpack(config)的实例。由于寻常我们写的大部份都是设置文件,现实是实行webpack打包的时刻,他也就是读取设置文件,然后new webpack(config)。

《从零开始开辟一个react脚手架(二)》

二 第二个就更简朴了。读取种种设置参数,起一个效劳,WebpackDevServer。

《从零开始开辟一个react脚手架(二)》
寻常我们都是经由过程敕令行起一个效劳,然后设置webpack.config.js内里的devServer,而如今就是经由过程API来完成。

虽然没有讲的很细,然则显著能够发明,脚手架说白一点就是经由过程种种api来完成我们底本须要考敕令行或许设置文件来做的事变。如许越发天真,而且复用性高,起新项目,假如差异不大,险些能够做到零设置,如许开辟者压根就不须要体贴营业以外的东西

从零开始开辟一个react脚手架(三)

    原文作者:白衣卿相
    原文地址: https://segmentfault.com/a/1190000018720941
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞