类似vue-cli,express-generator之类的脚手架工具是怎么做出来的?
在使用vue-cli
和express-generator
的时候,非常好奇它们到底是如何制作并运行的。google了好久都是一堆基于yo
、bower
和grunt
的方案,但显然vue-cli
之类的并非采用这套方案。
所以产生了下面几个问题,希望能够得到各位的解答:
假设我的脚手架工具名为
my-cli
,在终端输入my-cli
以后会自动为我生成文件目录,应该掌握什么知识?如何把
my-cli
变成一个可以全局安装的包,并且能够在终端直接输入my-cli
就生效呢?
问题可能有点小白,但真的是我非常想知道的东西,还请赐教,谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
1.
想一想你在执行
vue init webpack my-project
时,界面显示了什么东西。好像是先显示下载进度,然后输入一些 package.json 中的项目属性吧。那么他的实现就呼之欲出了,就是下载远程仓库的模版项目,然后替换模版项目中的一些字段。在 vue-webpack-tempate 中可以看到 README 和 package.json 中的模版占位符。
2.
npm 就是干这个的啊。
package.json
index.js
执行
npm link
后,你将得到一个全局的mycli
命令。Node.js 命令行程序开发教程
所有包都可以全局安装,只用安装的时候用
-g
参数就行了。点在于可执行文件,一般是放在
node_modules/.bin/
下,全局的这个文件夹是在PATH
中的,所以可以直接运行。可执行文件
所以,首先得知道怎么创建那个可执行文件。
这样子创建一个软连接,从
node_modules/.bin/eslint
→node_modules/eslint/bin/eslint.js
。处理输入的参数
tj大神的commander
https://github.com/tj/command...
操作文件夹和文件
https://npm.taobao.org/mirror...
执行shell命令
https://npm.taobao.org/mirror...
更完整的教程
其实推荐看vue-cli,eslint等比较简单业务的源码。
commander 和 download-git-repo