『手撕Vue-CLI』自定义指令

前言

最近一直忙于工作项目上面的事情,精力少了很多,所以一直没更文,很多技术点,都做在我自己的 Notion 笔记库中,今天,我决定要改变一下方式,所以又重新来更文了。

在前面的章节中已经分享了 VueRouter,实现了 VueRouter 之后,到此为止,Vue,Vuex,VueRouter 就都已经搞定了。

到这里,大家应该对 Vue 的使用都已经非常的熟练了,在 Vue 中,除了有 Vuex,VueRouter,在 Vue 全家桶中还有 Vue-CLI(Vue 脚手架)因为我们在企业的开发当中,想要快速生成项目的基础结构,包括配置文件、目录结构和一些基础代码,如果是我们自己去做的话,是不是非常的耗时,而且,这个过程每次都是重复的,只不过里面的一些项目信息是要改变的而已。

关于 Vue-CLI 的使用与概述如果有不懂的小伙伴可以去我之前分享的文章中学习,文章地址:

在这个文章当中深度的介绍了 Vue 技术栈所有知识。

因为前面已经将 Vue 全家桶大部分内容已经手写了一遍,目前就差 Vue-CLI,本篇开始就会陆续将 Vue-CLI 底层实现过程分享出来给大家一起学习。

手写 Vue-CLI,尤其是对于前端开发者来说,可以带来多方面的好处,可以深入地理解框架的工作原理和内部机制,有助于我们提升编程技能,增强问题解决能力,因为在手写 Vue-CLI 的过程中,会遇到各种各样的问题和挑战,解决这些问题可以增强你的调试和问题解决能力,可以帮助我们未来的项目中避免类似的错误。

手写 Vue-CLI 是一个从零开始的,需要考虑如何组织代码、如何划分模块,帮助你学习软件架构设计的基本原则和最佳实践(架构设计

这些好处呢还没完,如果你将我后续分享的内容全部阅读完,你还会收获到,新工具和新知识点方法的使用与理解,提高创新思维,提高个人影响力这几点。

回顾 Vue-CLI

先来简单的看看 Vue-CLI 是如何使用的,先到官网:

进入之后,我们首先得要安装 Vue-CLI:

好,看到这,我的问题来了,需要安装 Vue-CLI,怎么安装的,是不是在终端中输入 npm install -g @vue/cli 这个是什么?是不是指令。

所以说我们是不是可以根据这点开始撕 Vue-CLI,也正是本文首先要介绍的内容。

到这里有的人可能就会问了,怎么在控制台输入 npm install xxx 就会去执行和帮我们干一些事情呢?这个问题的答案可以在我之前分享的 NodeJS 文章中寻找答案,文章地址:

在这个系列中,有一个手写Node模块系统,在里面就有详细的介绍:

好的就指引到这里(后续的步骤我都是直接实战写代码,多多少少还是会带一点解释吧),我们开始撕 Vue-CLI 第一步,完善我们的自定义指令。

官方叫 Vue-CLI 那我的就给它命名为 nue-cli !,这个名字是我自己随便取的,大家可以随意取名。

到这里,我已经讲了我最近在干嘛,然后又回顾了一下 Vue-CLI 的使用,发现了 Vue-CLI 是一个指令,然后就到了现在这一步,自定义指令 (nue-cli)。

初始化项目

首先,需要初始化一个项目,这个项目是一个 Node 项目,所以我们需要使用 npm init -y 命令来初始化一个项目。

npm init -y

编写自定义指令

到这里项目初始化完成,接下来创建一个 JS 文件,在项目根目录下,新建一个 bin 文件夹,然后在 bin 文件夹下新建一个 index.js 文件。

index.js 文件中,我编写了一段代码,在头部通过 #! /usr/bin/env node 告诉系统将来这个文件需要在 NodeJS 环境下执行。

#! /usr/bin/env node

然后在 package.json 文件中,新增一个名为 bin 的 key,这个 Key 的作用是告诉系统,当我执行 nue-cli 这个指令的时候,系统应该去执行哪个文件。

"bin": {
  "nue-cli": "./bin/index.js"
},

到这里,我们的自定义指令已经完成了,接下来我们就可以在终端中输入 nue-cli 来执行我们的指令了。

nue-cli

再执行 nue-cli 之前我这里说一个注意点就是我们的项目的包名不能是你指令的名字,否则会报错:

这里是我的问题,所以我们需要修改一下:

看到了打印内容了,是因为我在 index.js 文件中写了一行打印语句代码,如果我不加这行代码,那么执行 nue-cli 指令的时候,终端中是不会有任何内容的。

所以需要在 index.js 文件中写一些内容,这样我们执行 nue-cli 指令的时候,终端中就会有内容了。

添加一行打印语句代码:

console.log('Hello Nue-CLI')

将指令链接到全局

Key 新增好了之后再通过 npm link 命令将这个指令链接到全局:

这样我们就可以在随意的地方使用这个指令了,调出终端,输入 nue-cli

可以看到,我们的指令已经生效了。

好了到这里吧这篇文章就到这里了,下一篇继续往下,总结一下总体流程其实就几步:

  1. 初始化一个 Node 项目
  2. 在项目中新建一个 bin 文件夹
  3. bin 文件夹下新建一个 index.js 文件
  4. index.js 文件中写入代码,通过 #! /usr/bin/env node 告诉系统这个文件需要在 NodeJS 环境下执行
  5. package.json 文件中新增一个 bin 的 key,告诉系统当执行 nue-cli 指令的时候,系统应该去执行哪个文件
  6. 通过 npm link 命令将这个指令链接到全局

还有一个注意点就是我们的项目的包名不能是你指令的名字,否则会报错。

posted @   BNTang  阅读(163)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
  1. 1 总会有人离开 王巨星
  2. 2 月亮 孟凡明
  3. 3 迟里乌布
  4. 4 我只能离开 颜人中
  5. 5 达尔文 蔡健雅
  6. 6 夜色滚烫 叶明净
  7. 7 你的星环 路飞文
  8. 8 不再说话 三块木头
  9. 9 黄昏 粥粥和小伙/粥粥
  10. 10 爱不单行 刘大拿
  11. 11 心动贩卖机 PIggy
  12. 12 别来无恙 苏星婕
  13. 13 我们的歌 刘大拿
  14. 14 一直很安静 王贰浪
  15. 15 去有风的地方 清音
  16. 16 雪 Distance Capper/罗言
  17. 17 坏女孩 徐良/小凌
  18. 18 乐园 沧桑Cang333/虎皮蛋/曲甲
  19. 19 Ayo(Explicit) Chris Brown/Tyga
  20. 20 我的美丽feat.海洋Bo 海洋Bo/高睿
  21. 21 世事可爱 粥粥和小伙/粥粥
  22. 22 我记得 赵雷
  23. 23 我想牵着你的手 许嵩
  24. 24 人们都不懂 刘诺然
  25. 25 寻一个你(电视剧《苍兰诀》温情主题曲) TTTTTeehom
  26. 26 子莫格尼 杉和
  27. 27 Cat Cafe Shoffy
  28. 28 风停了雨停了我们还拥抱着 Superluckyqi
  29. 29 寂寞沙洲冷 于潼
  30. 30 三国恋 王巨星
  31. 31 达尔文 林俊杰
  32. 32 有些 颜人中
  33. 33 小模样 张小只ya
  34. 34 是否 程响
  35. 35 楼顶上的小斑鸠 队长
  36. 36 笑场 薛之谦
  37. 37 还是分开 张叶蕾
  38. 38 修炼爱情 林俊杰
  39. 39 二零三 毛不易
  40. 40 雅俗共赏 许嵩
  41. 41 Serendipity 古瑞斯Graps/Zakiya晴子
  42. 42 就让这大雨全都落下·2023 刘大拿
  43. 43 老男孩 筷子兄弟
  44. 44 有何不可 许嵩
  45. 45 缓缓 杜宣达
  46. 46 好久不见 陈奕迅
  47. 47 爱的魔法(Cover 金莎) 封茗囧菌
  48. 48 在你的身边 盛哲
  49. 49 带我去找夜生活 告五人
  50. 50 假面舞会 很美味
  51. 51 STAY The Kid LAROI/Justin Bieber
  52. 52 我好想睡觉的 无敌西红柿
  53. 53 日不落(温柔版)
  54. 54 恋爱画板 锦零
  55. 55 7710 好乐无荒/尹露浠
  56. 56 给你呀(又名:for ya) 蒋小呢
  57. 57 Love Story Taylor Swift
  58. 58 Plain Jane(Remix 13z) 鱼幼微
  59. 59 晚风 7opy/BT07
  60. 60 拜托 孙晨
  61. 61 乌梅子酱 李荣浩
  62. 62 南半球与北海道 范倪Liu
  63. 63 星河万里 Rom邢锐
我记得 - 赵雷
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 赵雷

作曲 : 赵雷

编曲 : 赵雷

制作人 : 赵雷

我带着比身体重的行李 游入尼罗河底 经过几道闪电 看到一堆光圈 不确定是不是这里

我看到几个人站在一起 他们拿着剪刀摘走我的行李 擦拭我的脑袋 没有机会返回去

直到我听见一个声音 我确定是你

可你怎记得我

我带来了另界的消息 可我怎么告知你

注定失忆着相遇

我记得这里是片树林 后面有个山坡 山坡上的枣树每当秋天到来 我们把枣装满口袋

我记得除了朋友我还 做过你的叔父 你总喜欢跟在我的屁股后面 只是为了那几个铜钱

我记得我们曾是恋人 后来战争爆发 你上战场后就再也没有回来 直到收不到你的信

我们总这样重复分离 却要重新开始 相互送别对方 说着来世再见 再次失忆着相聚

呜 呜 呜 呜…

快来抱抱 快来抱抱我

呜 呜 呜 呜…

快来抱抱 快来抱抱我

在路上我遇到了一位故去多年的人 她是如此年轻 扎着过肩马尾 露出和你一样的笑

她和我讲了很多关于你成长的故事 在星空另一端 思念从未停止 如同墓碑上的名字

不要哭我最亲爱的人 我最好的玩伴 时空是个圆圈 直行或是转弯 我们最终都会相见

在城池的某个拐角处 在夕阳西下时 在万家灯火的某一扇窗纱里 人们失忆着相聚

呜 快来抱抱 快来抱抱我

呜 快来抱抱 快来抱抱我 我终于找到你

呜 快来抱抱 快来抱抱我 我终于找到你

编曲:赵雷

电吉他:刘磊、谢星

贝斯:Damien Banzigou

鼓:Chris Trzcinski

钢琴:姜伯虎

打击乐:刘恒、Chris Trzcinski

Organ:赵雷

口琴:赵雷

和声:朱莉、旭东

录音师:张俊

混音师:时俊峰

录音室:摩登天空、55TEC

录音助理:陈彬彬、朱莉

母带工程室:Sterling Sound

母带工程师:Randy Merrill

封面设计:韩东、小强、阿穆隆

点击右上角即可分享
微信分享提示