node学习记录-process
来自: https://juejin.cn/post/7274072375964254269
process是Nodejs操作和控制当前进程的API,并且是挂载到globalThis下的全局
process.arch
同os.arch()一样,返回操作系统的CPU架构
const os = require('os')
console.log(process.arch, os.arch())//x64 x64
process.cwd()
返回当前的工作目录
console.log(process.cwd())//D:\LR\node
process.argv
获取执行进程后面的参数,返回一个数组,例如执行: node process one two=three four,则可以获取到one,two==three, four,在命令行交互工具中有用,各种cli脚手架也是使用这种方式接受配置参数例如webpack
console.log(process.argv)
process.memoryUsage()
获取当前进程的内存使用情况,返回一个对象
{
rss:19050496, 常驻集大小,进程当前占用的物理内存量,不包括共享内存和页面缓存,反应了进程实际占用物理内存大小,
heapTotal: 4915200,堆区总大小,这是V8引擎为JavaScript对象分配的内存量,它包括了已用和未用的堆内存
heapUsed: 4021528,已用堆大小
external: 240772,外部内存使用量,这部分内存不是由Node.js进程直接分配的,而是由其他c/c++对象或系统分配的
arrayBuffers: 11158用于处理二进制数据的对象类型,它使用了JavaScript中的ArrayBuffer接口,这个属性显示了当前进程中 ArrayBuffers 的数量
}
console.log(process.memoryUsage())
ArrayBuffer:JavaScript全局对象,用于表示一个通用的、固定长度的二进制缓冲区,是一个字节数组,通常在其他语言中称为“byte array”,MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer
process.exit()
5秒不会被打印,因为在2秒的时候程序已经退出了
setTimeout(()=>{console.log('5秒')
}, 5000)
setTimeout(()=>{// 2秒后退出process.exit()
}, 2000)
process.on('exit', ()=>{console.log('进程被退出')
})
process.kill()
与exit类似,kill用来杀死一个进程,接受一个参数进程id可以通过process.pid 获取
process.env
返回包含用户环境的对象,修改和查询环境变量。修改并不会真正影响操作系统的变量,而是只在当前线程生效,线程结束便释放。
console.log(process.env)
环境变量
区分开发环境和生产环境
cross-env: 跨平台设置和使用环境变量 不论是在Windows系统还是POSIX系统。同时,它提供了一个设置环境变量的脚本,使得您可以在脚本中以unix方式设置环境变量,然后在Windows上也能兼容运行
安装:npm install cross-env
package.json
{"name": "node","version": "1.0.0","description": "first test node","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1","dev": "cross-env NODE_ENV=dev node process.js","build": "cross-env NODE_ENV=prod node process.js"},"author": "","license": "ISC","dependencies": {"cross-env": "^7.0.3","jsdom": "^24.1.3","node-fetch": "^3.3.2"}
}
执行npm run dev
执行npm run build
这里没懂