关于前端:执行vue-create时到底做了什么

4次阅读

共计 1781 个字符,预计需要花费 5 分钟才能阅读完成。

本文介绍

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

有前端开发教训或者用过 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 的身影。

如果不晓得 node 装在哪了,在你装置完 vue-cli 后,能够用以下命令查看 vue-cli 的地位

# windows 用户
where vue

# mac 用户
which vue

关上 vue 文件看了下,外面的内容如下

#!/bin/sh
basedir=$(dirname "$(echo"$0"| sed -e's,\\,/,g')")

case `uname` in
    *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;;
esac

if [-x "$basedir/node"]; then
  exec "$basedir/node"  "$basedir/node_modules/@vue/cli/bin/vue.js" "$@"
else 
  exec node  "$basedir/node_modules/@vue/cli/bin/vue.js" "$@"
fi

发现了一条比拟扎眼的门路

$basedir/node_modules/@vue/cli/bin/vue.js

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

能够看出 \nodejs 目录下的 vue 文件只是一个软链接,它指向 /node_modules/@vue/cli/bin/vue.js

于是我顺藤摸瓜,进入了 /node_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 node

console.log('Hello World')

而后进入 node 根目录,应用以下命令创立链接(我在这应用 sayhello 这个命令,你能够自定义的)

ln -s D:/test.js sayhello

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

此时,应用 Git Bash 在任何地位都能够间接应用 sayhello 命令了。

举荐浏览

  • 👍《『前端必备』本地数据接口》
  • 👍《这 18 个网站能让你的页面背景炫酷起来》
    点赞 + 关注 + 珍藏 = 学会了
正文完
 0