来源:Node.js

process是操作和控制当前进程的API,还是挂载到globalThis的全局API

process.arch

process.arch()返回操作系统CPU架构,和os.arch()一样

process.cwd

process.cwd()返回当前工作目录,在哪里执行脚本就返回哪个目录

ESM模式下无法使用__dirname,可以将process.cwd()和path拼接代替使用

process.argv

process.argv返回一个数组,可以获取执行进程后面的参数,各种cli脚手架也使用这种方式接受配置参数

process.memoryUsage

process.memoryUsage()返回一个对象,可以获取当前进程的内存使用情况,其中包含了各种内存使用指标

1
2
3
4
5
6
7
{
rss: 20525056,
heapTotal: 4931584,
heapUsed: 4084560,
external: 309830,
arrayBuffers: 11158
}
  • rss:全称Resident Set Size,常驻集大小,物理内存的存量
  • heapTotal:V8分配的堆内存总大小,包括未使用的内存
  • heapUsed:已使用的堆大小
  • external:外部内存使用量,例如C或C++
  • arrayBuffers:二进制的总量

process.exit

process.exit()能使进程尽快退出,即使仍有未完全完成的异步操作挂起

process.kill

process.kill()可以杀死一个进程,接收一个参数为进程id

可以使用process.pid获取自己的进程

1
2
// 所以这就相当于process.exit()
process.kill(process.pid)

process.env

process.env读取操作系统中所有的环境变量,也可以修改

在这里修改并不会真正影响操作系统的环境变量,而只是在当前线程生效,线程结束便释放

案例

先安装个依赖:

1
npm install cross-env

cross-env可以跨平台设置和使用环境变量,不论是在Windows系统还是posix系统

cross-env设置环境变量底层:如果是Windows就调用set;如果是posix就调用export

1
2
set NODE_ENV=production  #windows
export NODE_ENV=production #posix

它提供了一个设置环境变量的脚本,能在脚本中以Unix方式设置环境变量,在Windows上也能兼容运行

使用方法:

1
cross-env NODE_ENV=[自定义值]

有时项目需要区分开发环境和生产环境,就可以这样配置scripts:

1
2
3
4
5
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "cross-env NODE_ENV=dev node index.js",
"build": "cross-env NODE_ENV=prod node index.js"
},

在代码中就能使用process.env判断环境了