脚手架开发流程

article/2025/10/10 0:25:01

先把原理讲通,方便后续的开发。 

后续都拿vue-cli举例

脚手架实现原理

  • 为什么全局安装@vue/cli后会添加的命令为vue
  • 全局安装@vue/cli时发生了什么?
  • 执行vue命令时发生了什么?为什么vue指向一个js文件,我们却可以直接通过vue命令去执行它?

为什么全局安装@vue/cli后会添加的命令为vue

mac下我们可以先通过which vue查找vue命令的实际文件路径,再定位到bin路径下,

bin目录下都是一堆可执行文件,通过命令ll查找到vue指令是个软连接,它实际指向的是后面的地址,这个地址是全局的node_modules,而bin/vue.js就是vue命令实际执行的文件

 

 那为什么执行vue命令会执行bin/vue.js呢?

我们定位到实际地址的@vue/cli目录下,查看package.json,里面有个bin,这个bin配置了vue这个命令以及实际执行的文件。

 全局安装@vue/cli时发生了什么?

首先全局安装脚手架会把包下载到全局的node_modules下,下载完包之后会解析package.jsonbin这个配置,如果说发现bin下有配置,它就会在node安装的主目录的bin目录下创建一个软连接。

执行vue命令时发生了什么?

这个上面说过了,就不再重复了

为什么vue指向一个js文件,我们却可以直接通过vue命令去执行它?

首先我们知道一个js文件它是不能被直接执行的,它必须通过解释器才能执行,比如node或者浏览器,很明显vue.js没有通过node去执行,那么它是怎么运行起来的呢?

我们先看看脚手架实际执行的bin/vue.js

 仔细看第一行,这一行特别关键,它的意思就是执行这个文件的时候到环境变量里找node这个命令,找到之后通过node命令执行,跟直接node vue.js是等价的。

下图是描述脚手架命令执行的全过程。

到此开头的几个问题就全解决了,接下来开始脚手架的开发了。

开发流程

1.创建npm项目

2.创建脚手架入口文件,最上方添加:

#!/usr/bin/env node

3.配置package.json,添加bin属性

4.编写脚手架代码

5.将脚手架发布到npm

使用流程

npm install -g your-cli

脚手架开发难点解析

1.分包:将复杂的系统拆分成若干个模块

2.命令注册,比如:

vue create

vue add

vue invoke

3.参数解析:

vue command [options] <params>

举个栗子

options全称:--version、--help等

options简写:--V、--h

带params的options:--path /xxx/xxx

还有很多,比如:

命令行交互

日志打印

命令行文字变色

网络通信:HTTP/Websocket

文件处理

等等

快速开发一个脚手架

首先新建个文件夹,文件夹名和后面命令名都可以自定义合适的名字,初始化个package.json 

新建bin文件夹,在bin文件夹下新建Index.js,开头第一行添加#!/usr/bin/env node

 配置package.json配置bin

 发布脚手架到npm

npm login登录

npm publish

发布完之后可以到npm官网查看

之后就可以npm install -g sanstu-test进行安装

sanstu-test运行

本地如何调试

1.上级路径npm install

在脚手架项目的上级的路径下里通过npm install -g sanstu-test安装的时候会自动链接到本地的脚手架项目。

2.npm link

在脚手架项目目录下执行npm link之后,会在安装的node下添加对应的命令链向全局node_modules下的脚手架,而node_modules下的脚手架又会链向本地的脚手架,实现软链。

注册一个命令:sanstu-test init

首先一个命令是这样子的sanstu-test [command],我们如何识别到command这个参数呢?

可以通过process库获取argv

这里第一个是node,第二个是脚手架,第三个就是参数,也就是说当第三个参数有的时候就可以进行解析执行相应的方法 。同理后面的[options] <params>参数也是一样的。


http://chatgpt.dhexx.cn/article/1XcI1Ic8.shtml

相关文章

ns2模拟仿真实验

内容&#xff1a; 编写TCL脚本&#xff0c;搭建如下图所示的一个网络&#xff0c;共6个节点&#xff0c;其中2、3节点用做ftp服务器和客户端&#xff0c;4、5节点用做cbr流量的源和目的&#xff0c;而0、1节点用做转发设备。各节点间的链路属性见图。 模拟时间设为13秒钟&#…

NS2网络仿真环境的搭建和使用

一实验概述: 1学会安装和使用NS2&#xff1b;熟悉NS2的文档结构&#xff1b;掌握NS2的仿真环境、使用界面和操作方法。 2学会安装NS2仿真环境和配置。 3了解NS2的工作原理和程序组成。 4熟悉NS2中的脚本语言Tcl和Otcl 5学习分裂对象模型和TclCL 6NS的时间调度机制学习。 …

NS2的NODE类——node

本文转自&#xff1a;http://hi.baidu.com/wirelesscat/blog/item/67c6db4633f71e016b63e59b.html 同时推荐一个很好的博客&#xff0c;这里有连载的 ns2 仿真问题&#xff0c;感谢大牛&#xff5e;&#xff5e;&#xff5e; 博客地址&#xff1a;http://hi.baidu.com/wirele…

NS2问题解决

问题一&#xff1a; When configured, ns found the right version of tclsh in /usr/bin/tclsh8.6 but it doesnt seem to be there anymore, so ns will fall back on running the first tclsh in your path. The wrong version of tclsh may break the test suites. Reconfi…

NS2简单介绍

NS是一种针对网络技术的源代码公开的、免费的软件模拟平台&#xff0c;研究人员使用它可以很容易的进行网络技术的开发&#xff0c;而且发展到今天&#xff0c;它所包含的模块已经非常丰富&#xff0c;几乎涉及到了网络技术的所有方面。所以&#xff0c;NS成了目前学术界广泛使…

NS2网络仿真

NS2安装与配置TCP/UDP比较仿真静态/动态路由仿真 1.安装与配置 1.1更新系统 sudo apt-get update #更新源列表 sudo apt-get upgrade #更新已经安装的包 sudo apt-get dist-upgrade #更新软件&#xff0c;升级系统 1.2安装ns2需要的几个包 sudo apt-get install build-ess…

ns2安装详细过程与网络仿真

ns2安装详细过程与网络仿真 博客分类&#xff1a; Networks TclLinuxUnixGCCVC 简单的说&#xff0c;NS&#xff0d;2是一个网络模拟器&#xff0c;所以经常被用到网络课的教学中。 NS-2是OpenSource的&#xff0c;最早的版本是在linux/unix下运行的&#xff0c;后来有了wi…

NS2教程

柯老师的NS2新网址 Due to some reasons, my NS2 website is sometimes donw and unavailable for many users. Therefore, I provide another backup website. 1. NS2 http://csie.nqu.edu.tw/smallko/ns2/ns2.htm 2. old_NS2 (backup of NS2 Learning Guide) http://csie.n…

ns2安装和若干问题的解决方法

文章目录 1. 安装与配置2. 安装nam3. 配置环境变量4. 检查是否能够成功运行参考资料 在安装ns2的过程中遇到了很多问题&#xff0c;为了记录这些问题和为同样遇到这些问题的朋友提供思路&#xff0c;写下这篇博文。 安装ns2和nam主要分为如下几个步骤&#xff1a; 安装与配置…

Linux下安装ns2

最近为了项目需要用到NS2软件用于网络仿真实验&#xff0c;从Windows到Linux折腾了我将近一周的时间。在Windows装了卸、卸了装十几遍还是不成功&#xff0c;最后放弃了&#xff0c;回到了Linux系统&#xff0c;又折腾了两天终于安装测试成功&#xff01;&#xff08;安装其实蛮…

企业微信第三方扫码登录

为什么写这个文章 公司后台突然需要扫码登录&#xff0c;网上的企业微信扫码都是基于自建应用的扫码登录&#xff0c;对第三方的扫码并没有多加介绍 概述 企业微信的管理员和成员&#xff0c;可通过单点登录机制&#xff0c;登录到第三方网站。第三方可通过接口&#xff0c;…

微信第三方登录有两种登录方式, 1. 微信开放平台登录 2. 微信公众平台授权登录?

https://www.v2ex.com/amp/t/390333 微信开放平台登录与微信公众平台授权登录区别在哪? 2017-09-13 12:05:41 08:00 xoxo419 微信第三方登录有两种登录方式, 1. 微信开放平台登录 2. 微信公众平台授权登录? 问: 两者区别在哪? 壹号店 http://m.yhd.com 微信第三方登录属…

Android APP微信第三方登录踩坑 - 微信开放平台修改应用包名后微信第三方登录失败

在微信开放平台注册移动应用&#xff0c;才能在APP里实现「微信登录」和「微信支付」。 近期因为业务需要&#xff0c;需要修改应用的包名&#xff0c;因此在微信开发平台重新提交了应用「基本信息」修改申请&#xff0c;顺便吐槽下&#xff0c;现在微信开发平台对应用审核真是…

微信第三方登录redirect_uri 参数错误

微信第三方登录 先说解决方案&#xff1a;redirect_uri 参数错误 在开放平台设置好回调地址&#xff0c;例如地址是 www.niezhiliang.com 那么在生成二维码的时候回调只能写该域名下的地址 在申请二维码页面回调地址(你的redirect_uri) 还必须加上http或者https&#xff0c;…

微信第三方登录接口

随着手机微信的崛起&#xff0c;腾讯发布的微信联登确实很诱惑pc端的伙伴们&#xff0c;现在就说说在pc端用微信扫一扫实现微信第三方登陆的方式。 第一步&#xff1a;获取AppID AppSecret(不做解释&#xff0c;自己去微信公众平台申请) 第二步&#xff1a;生成扫描二维码&…

微信 第三方登录

转自&#xff1a;http://www.cnblogs.com/linjunjie/p/6378166.html#3902595 从http://www.cnblogs.com/v-weiwang/p/5732423.html 申请开发者账号之内的就不累赘了&#xff0c;网上一大堆&#xff1a; 说下需求&#xff0c;一个网页要在三类容器运行&#xff0c;公司app&#…

微信第三方登录

微信第三方登录 步骤&#xff1a; 1.申请你的AppID 请到微信开放平台https://open.weixin.qq.com/注册成为开发者&#xff0c;然后创建应用并提交审核&#xff0c;只有审核通过的应用才能进行开发。 2.下载SDK及API文档 Android Studio环境下&#xff1a; 在build.gradle文件…

流程图了解微信第三方登录

1.首先是&#xff0c;浏览器显示微信登录 2.用户扫描&#xff0c;发送请求到微信服务器&#xff0c;前端也会发送一个请求到自己的后台服务器&#xff0c;后台服务器提供微信服务器获取第三方验证授权地址&#xff0c;携带回调路径 3.微信服务器验证成功&#xff0c;返回code…

Oracle官网下载JDK

进入Oracle官网&#xff1a;https://www.oracle.com/index.html 1、选择support&#xff08;支持&#xff09;software Download 2、选择 java 3、选择jdk 4、拉到底选择java archive&#xff08;档案文件&#xff09; 5、选择要下载的版本

解决JDK官网下载龟速的问题

在JDK的官网下载JDK时还需要登录Oracle 且下载的时候那速度相当缓慢 可以使用华为的镜像下载&#xff0c;超快的 下载仓库地址&#xff1a;x​​​​​​​ Index of java-local/jdk