来源:Node.js

npm run

使用vite脚手架创建项目时,应该会看到package.json里的这项:

1
2
3
"scripts": {
"dev": "vite"
}

使用npm run dev时,就会在package.json的script配置内寻找对应的脚本命令,此处会执行dev属性的值vite

vite是一个可执行脚本,它的查找规则:

  1. 先从当前项目的node_modules/.bin查找可执行命令vite

  2. 如果没找到,就去全局的node_modules(npm全局安装的库)查找可执行命令vite

    Nodejs会为全局node_modules配置环境变量,所以这些命令能全局使用

  3. 如果还没找到,就去环境变量查找

  4. 再找不到,就得报错了

如果成功找到vite,就会发现有三个文件

  • .sh文件:给Linux、unix、Macos使用
  • .cmd文件:给Windows的CMD使用
  • .ps1文件:给Windows的PowerShell使用

因为Nodejs具有跨平台性,所以可执行命令会兼容各个平台

vite命令来自项目安装过的依赖Vite,Vite的package.json中配置了bin:

1
2
3
"bin": {
"vite": "bin/vite.js"
}

npm安装依赖时,会自动地把依赖package.json bin配置的可执行文件放入上级的node_module/.bin文件夹中

此处只是一个示例,可以自己配置,操作方法是一样的

npm生命周期

1
2
3
4
5
"scripts": {
"predev": "node prev.js",
"dev": "node index.js",
"postdev": "node post.js"
}

在该配置下,执行npm run dev时,会先执行predev,再执行dev,最后执行postdev

可以用于做一些附加操作,例如

  • 使npm run build能够打包项目,可以再配置prebuild,使其打包前自动删除旧的dist目录
  • 使npm run release能够发布npm,可以再配置postrelease,使其发布后推送项目到git

Vue-cli就用到了这一特性