类似vue-cli,express-generator之类的脚手架工具是怎么做出来的?

发布于 2022-09-03 09:27:09 字数 452 浏览 23 评论 0

在使用vue-cliexpress-generator的时候,非常好奇它们到底是如何制作并运行的。google了好久都是一堆基于yobowergrunt的方案,但显然vue-cli之类的并非采用这套方案。
所以产生了下面几个问题,希望能够得到各位的解答:

  1. 假设我的脚手架工具名为my-cli,在终端输入my-cli以后会自动为我生成文件目录,应该掌握什么知识?

  2. 如何把my-cli变成一个可以全局安装的包,并且能够在终端直接输入my-cli就生效呢?

问题可能有点小白,但真的是我非常想知道的东西,还请赐教,谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

赠佳期 2022-09-10 09:27:09

1.

想一想你在执行 vue init webpack my-project 时,界面显示了什么东西。好像是先显示下载进度,然后输入一些 package.json 中的项目属性吧。那么他的实现就呼之欲出了,就是下载远程仓库的模版项目,然后替换模版项目中的一些字段。
vue-webpack-tempate 中可以看到 README 和 package.json 中的模版占位符。

2.

npm 就是干这个的啊。

package.json

{
  "name": "my-cli",
  "bin": {
    "mycli": "index.js"
  }
}

index.js

console.log('my-cli start!')

执行 npm link 后,你将得到一个全局的 mycli 命令。

栖竹 2022-09-10 09:27:09

所有包都可以全局安装,只用安装的时候用-g参数就行了。

点在于可执行文件,一般是放在node_modules/.bin/下,全局的这个文件夹是在PATH中的,所以可以直接运行。

可执行文件

所以,首先得知道怎么创建那个可执行文件。

"bin": {
    "eslint": "./bin/eslint.js"
  },

这样子创建一个软连接,从node_modules/.bin/eslintnode_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等比较简单业务的源码。

寄离 2022-09-10 09:27:09

commander 和 download-git-repo

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文