执行vue create时到底做了什么

javascript 文章 2022-07-15 14:29 579 0 全屏看文

AI助手支持GPT4.0

本文介绍

点赞 + 关注 + 收藏 = 学会了


有前端开发经验或者用过 node 的开发者应该知道,如果需要在本地运行 js 文件,需要通过 node xxx.js 来执行。

但在执行 vue create project-name 创建 Vue 项目时,为什么命令不是以 node 开头呢?

这次就来浅浅的探讨一下,这条命令为什么 “不需要” 使用 node 来执行。

本文的运行环境

  • 操作系统:win11
  • node版本:17.6
  • nvm版本:1.1.9

由于我日常工作原因,需要使用 nvm 切换 node 版本。

安装 vue-cli

我默认大家都已经在自己电脑安装好 node 了,如果没装的,请打开 node官网 自行安装。


在执行 vue create 命令前,先确保电脑已经安装了 vue-cli

vue-cli 是创建 Vue 项目的一个脚手架工具, vue-cli 提供了 vue create 等命令。


使用以下命令安装 vue-cli

npm install -g @vue/cli# 或yarn global add @vue/cli

在装好 vue-cli 后,执行 vue --version 就可以查看到当前安装的 vue-cli 的版本。

vue-cli 到底安装在哪里了?

不管是使用 npm 还是 yarn 安装 vue-cli ,都离不开 node

所以我到了 node 的安装目录下查看,果然发现了 vue 的身影。

file


如果不知道 node 装在哪了,在你安装完 vue-cli 后,可以用以下命令查看 vue-cli 的位置

# windows用户where vue# mac用户which vue

file

打开 vue 文件看了下,里面的内容如下

#!/bin/shbasedir=$(dirname "$(echo "$0" | sed -e 's,\,/,g')")case `uname` in    *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;esacif [ -x "$basedirode" ]; then  exec "$basedirode"  "$basedirode_modules/@vue/cli/bin/vue.js" "$@"else   exec node  "$basedirode_modules/@vue/cli/bin/vue.js" "$@"fi

发现了一条比较刺眼的路径

$basedirode_modules/@vue/cli/bin/vue.js

$basedir 表示文件所在的目录。


可以看出 nodejs 目录下的 vue 文件只是一个软链接,它指向 ode_modules/@vue/cli/bin/vue.js


于是我顺藤摸瓜,进入了 ode_modules/@vue/cli/bin/ 目录,发现了 vue.js 文件。

这个文件有200多行代码,里面有详细配置 vue-cli 的各种指令和配置项。
但本文目的是解开为什么 “不需要” 使用 node 就可以执行 js 文件。所以在本篇不打算深入讲解里面的各项配置。


我们只需看该文件的第一行。

#!/usr/bin/env node

#!/usr/bin/env 的意思是找到当前系统的全局环境,然后再加上 node
整句的意思是:在全局找到环境变量中 node ,然后通过 node 来执行该文件。

Hello World

整理一下前面的讲解,我们是不是就有能力弄一个 “不需要” 使用 node 就能执行的文件出来了?

  1. 软链接,在全局环境中添加一个可执行的js文件。
  2. 使用 #!/usr/bin/env node 调用环境变量中的 node 来执行自身。

第二个条件其实就是在 js 文件的头部添加一句话。注意,必须是文件的第一行!


那么如何给文件添加个软链接呢?

百度了一下,使用 ln -s 命令就行了 (windows 用户建议使用 Git Bash执行命令)

ln -s 文件路径 命令名

我在 D盘 创建 test.js,内容如下:

#!/usr/bin/env nodeconsole.log('Hello World')

然后进入 node 根目录,使用以下命令创建链接(我在这使用 sayhello 这个命令,你可以自定义的)

ln -s D:/test.js sayhello

之后在 node 根目录下就会出现 sayhello 文件(没有后缀的)

file


此时,使用 Git Bash 在任何位置都可以直接使用 sayhello 命令了。

file

推荐阅读

-EOF-

AI助手支持GPT4.0


国内超级便宜服务器

摸鱼人热门新闻聚合

钻级赞助商 我要加入

开发者在线工具

第三方支付技术请加QQ群

相关文章
从零开始制作【立体键盘】,画UI免写CSS,【盲打练习】的交互逻辑只用了10来行表达式!
根据屏幕大小自动修改字体大小的代码
金额每三个数字用一个逗号分隔(正则表达式实现)
浏览器中的“本地存储”
ES6中class方法及super关键字
随便看看
微信开放平台跟公众平台有什么区别? 3517
怎么添加小程序支付功能? 4312
教育科技公司申请微信支付被拒绝? 4695
微信公众号免300认证教程 5776
小程序已经上线,作为管理员无法在小程序数据助手查看数据? 5187
小程序广告组件通过审核,但是小程序内没有显示广告? 4962
企业微信通讯录账号被管理员误/恶意删除,怎么办? 9389
问题? 8910
如何快速搭建抽奖助手小程序(无需代码知识) 6040
许涛 大哥在吗, 要解冻小程序的时候提示信息主体不一致, 能帮忙看下吗? 7344