文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
Command Resolve
当我们执行edp <cmd> [<sub-cmd>] --arg1=foo --arg2=bar
的时候,首先面临的一个问题是需要根据<cmd>
定位到提供哪个npm package提供了<cmd>
的实现。定位的过程如下:
- 检查edp的package.json中
edp.extensions
的每一项,对应的value数组里面是否包含<cmd>
- 如果存在,去第3步,否则去第4步
- 把该项的key当做npm package的名称,返回
- 检查edp的package.json中
edp.extendsions
是否存在edp+<cmd>
的配置,如果存在,把edp+<cmd>
当做npm package的名称,返回 - 最后都没有找到,那么把
edpx+<cmd>
当做npm package的名称,返回
找到npm package之后,就会自动安装(如果之前没有安装过),然后根据这个<cmd>
去npm package下面的cli
目录找到对应的js文件,require之后返回一个cli
对象,执行cli.main
即可
Default Command
当我们执行edp project
的时候,因为根据前面的Command Resolve逻辑,没有任何一个npm package提供了project
这个命令,但是在edp.extensions
里面配置了edp-project,因此我们找到并安装了edp-project之后,需要执行edp-project的Default Command。
Default Command的名称跟npm package的名称一样(去掉edpx和edp的前缀之后)。对于edp-project来说,它的Default Command就是project,所处的位置也是在npm package的cli目录下面。
Sub Command
edp是支持edp project init
的时候,init
就是project
的<sub-cmd>
,这个从目录结构层级上可以区分出来:
$ edp-project git:(1.0.0-dev) tree cli cli ├── project │ ├── init.js │ ├── initBuild.js │ ├── initWebServer.js │ └── updateLoaderConfig.js └── project.js
Arguments and Options
cmd执行的时候有时候需要传递一些额外的参数。参数有两种形式:Arguments和Options。
如果要设置cmd所支持的Options,可以采用如下的方式:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论