node自定义全局命令的原理
为什么我们使用 vue-cli 就可以调用node全局的包呢?
在我们npm -g 安装依赖的时候,会去查看你所安装以来的package.json里边是否存在bin配置项
如果有的话 node 会生成一个 你的bin下边的key的.cmd 文件,cmd里边的代码如下;
@ECHO off
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
"%_prog%" "%dp0%\node_modules\wuyjcli\index.js" %*
ENDLOCAL
EXIT /b %errorlevel%
:find_dp0
SET dp0=%~dp0
EXIT /b
其中有一行代码是你的bin 下边的key 对应的value 的值 这个值也就是入口文件;
当你使用全局命令的时候回 执行这个 key.cmd文件 文件会找到你的所写的入口文件 /***/index.js
然后这个全局命令就执行完了。
如果你使用npm link 将你开发的包挂载到全局,node同样会生成一个 .cmd文件(如果有配置bin 的话)但是你这个包并没有复制到全局的node 中 而是 形成了一个软连接(也就是引用关系),相当于在全局的node中放了一个你项目的快捷方式。
还有要主义的一点是你的自定义全局命令的入口文件要顶部要写上 #!/usr/bin/env node
这句话的意思是用node执行这个文件
标签:
npm
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了