老师请教个关于exec逻辑的问题

老师请教个关于exec逻辑的问题

关于exec代码的一些理解:


以下代码是在exec中,只有脚手架执行init命令才会进入exec中,所以cmdName一定是init是吗?

如果是这样的话,那岂不是相当于写死了packageName?


const SETTINGS = {
 init: "@imooc-cli/init"

}

const cmdName = cmdObj.name()

const packageName = SETTINGS[cmdName]


-------------------------------

但是咱脚手架实际的需求是:能通过自定义的包进行初始化,但是按照上面的逻辑,无法通过自定义的包初始化?

所以我就想请教下,packageName不应该是作为init的参数传进去吗?为什么要定义在SETTINGS中?定义SETTINGS的意义是什么?


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,cmdName是通过init命令解析出来的,使用自定义init命令是通过--targetPath实现的,SETTINGS里面的包算是一个默认包,如果你没有使用--targetPath指定init的文件才会下载特定的init命令包进行解析的,SETTINGS这是一个对象用来存储下载的包名,名字可以自己定义的。

  • jindong 提问者 #1

    根据我的理解:


    SETTINGS是一个命令和包名映射表,它的作用是将命令名称映射为包名,比如将init命令映射为"@imooc-cli/init",它仅仅在没有--targetPath的情况下起作用。


    如果不使用"@imooc-cli/init"包初始化,就必须通过--targetPath手动指定已经下载安装好的本地包。


    不知我理解的对不对,烦请老师指导

    2021-04-06 16:38:38
  • jindong 提问者 #2

    还有个问题,如果想在SETTINGS中新增映射关系,只需要在yargs中配置新的命令,并且绑定到exec函数,然后在SETTINGS中配置新的映射关系,就可以了对吧?

    2021-04-06 16:42:47
  • jindong 提问者 #3

    麻烦老师把我的两个问题都回复一些,谢谢!

    2021-04-06 16:43:18
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师