npx
- npm 从5.2版开始,增加了 npx 命令。它有很多用处
1、不用全局安装npm包
2、不用配置script直接调用项目内部安装的模块
package.json 如下
{
"name": "laspluginlesson",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "vite"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"vite": "^5.4.9"
}
}
-
想在项目根目录下直接调用 vite build,报错 (vite 不是内部或外部命令,也不是可运行的程序)
-
为什么找不到vite,我的node_modules里面明明已经安装vite了??
原因:node_modules中是安装了vite,但是在终端中执行的命令是不会到项目根目录中查找的,这个就涉及到操作系统的查找策略了,当执行了vite计算机,他就会去环境变量path中查询node环境变量中,全局的node_modules中是否有vite,因为我们不是全局安装的vite,所以找不到 -
为什么使用npm vite build 就可以执行了呢??
原因:因为npm 是node的包管理器,安装node的时候自带的,执行npm vite时,npm包管理器的查询策略是在当前目录的node_modules中查找,如果找不到,就到父级文件中查找,直到找到根目录如果还没有,那就到环境变量中查找,因为当前目录中安装的有vite,所以可以执行 -
npx vite build 为什么也可以执行??
原因:npx 是 npm出的一个命令,可以在没有安装npm包的情况下,去下载改包并执行命令,下载到一个临时目录,使用以后再自动删除 -
如果想让 npx 强制使用本地模块,不下载远程模块,可以使用--no-install参数。如果本地不存在该模块,就会报错。
-
反过来,如果忽略本地的同名模块,强制安装使用远程模块,可以使用--ignore-existing参数。比如,本地已经全局安装了create-react-app,但还是想使用远程模块,就用这个参数。