学习搭建一个自己的 vue 脚手架 制作 Commands 三

79 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第20天,点击查看活动详情

八、制作 Commands 三

引言

这里开始新的学习系列,动手搭建一个属于自己的 vue 脚手架

主要以 vue 官方的 vue cli 作为参考和学习

方便自己在后续创建 vue 项目时,不必总是复制粘贴

制作 Commands

上一节,我们成功的制作了一个 Commands,并增加了 options

但是呢,其实是不完美的,这一节给出第三种方式

比较

我们先看一下,我们与 vue cli 之间的差距在哪

image.png

image.png

从上面两张图,可以看到我们的 options 放置的位置 与 vue cli 是不同的

所以再次改进一下我们的 Commands

方式三

从上面知道,我们应该将 options 放到中间的位置

lib\core\commands.js 文件下,修改我们的 create 方法

const create = (program) => {
  program
    .command('create [options] <app-name>')
    .description('create a new project powered by wzms-cli')
    .action((name, options) => {
      console.log(name, options)
    })
}

放到中间后,我们再次执行

image.png

可以看到结果让我们很意外,我们的 opitons 竟然是一个必填的参数,这是为什么呢?

我们先将问题放置在这里,一会和下面的一起进行解答

多个参数

如果 options 放在中间,那么如何实现多个参数呢

我们这里再次尝试修改 create 方法

  program
    .command('create [options...] <app-name>')

执行后会发现,报错了,如下图

image.png

汇总

到这里,我们应该就意识到了,我们不应该这样写我们的 opitons

因为正常情况下,options 是一个可选参数,但是目前是一个必填参数

而且从下图也可以看到,我们是多了一个 options,所以我们的这种写法是不对的

image.png

那肯定与我们最初的想法是不一样的,保留这个疑问,在下一节进行真正意义上的实现可选的 opitons

总结

这一节,主要是踩坑,知道 options 的这种写法是不对的,会有更好的 options 写法