当前位置: 首页 > Web前端 > HTML

前端基础知识---npm

时间:2023-03-29 12:20:19 HTML

npminstall到npmrunxxx深度解读:https://juejin.cn/post/708973...1.运行npminstall后发生了什么?npm模块安装机制:执行npminstall命令检查node_modules目录下是否已经存在指定模块:如果存在,则不重新安装;如果不存在,则npm从注册表中查询模块压缩包的网址,下载压缩包,存放在根目录下。将npm目录下的压缩包解压到当前项目的node_modules目录下2.运行npmrunxxx后出现了什么?大家都知道当前节点是用npm捆绑的。npm是node的依赖管理器,尽管它不是唯一的选择,我们还有pnpm/yarn/cnpm/ni。但是npm依赖声明文件package.json本身基本没有变化。比如我们可以使用npmrunserve来运行某个命令,或者使用yarnserve来运行某个命令。可以看到yarn在这个地方可以省略参数run。然而,它们都只是解析package.json。比如在下面的文件中运行npmrunserve时,实际上运行的是json文件中scripts下的servekey对应的命令。{"name":"h5","version":"1.0.7","private":true,"scripts":{"serve":"vue-cli-serviceserve"},"dependencies":{"axios":"^0.19.2","vuex":"^3.4.0"},"devDependencies":{"node-sass":"^4.12.0"}}对于这个定义的可执行文件,每个系统没有相同。在Windows系统上,可执行文件是通过组策略和环境变量确定的。使用setpathext查看pathext环境变量,它定义了可以作为可执行文件的后缀。#查看可执行文件后缀setpathext当我们运行vue-cli-serviceserve命令时,相当于运行node_modules/.bin/vue-cli-service.cmdserve然后这个脚本会使用node来运行vue-cli-service.js是一个js文件,因为在node中可以使用一系列系统相关的API,所以在这个js中可以做很多事情,比如读取和分析这个命令运行目录下的文件,以及根据模板生成文件等待。#unix默认的可执行文件,必须输入完整的文件名vue-cli-service#windowscmd中默认的可执行文件,当我们不加后缀时,自动根据pathext查找文件vue-cli-service.cmd#WindowsPowerShell中的可执行文件可以跨平台vue-cli-service.ps1总结:当运行npmrunxxx时,npm会先在当前目录的node_modules/.bin中寻找要执行的程序,并如果找到就运行它;notfound然后从全局node_modules/.bin中搜索,npmi-gxxx安装到全局目录下;如果还是找不到全局目录,则从路径环境变量中搜索其他同名的可执行程序。