Open vivatoviva opened 5 years ago
如果需要重写process.env 需要根据平台确定分割符,可使用如下确定分隔符
const SEPARATOR = process.platform === 'win32' ? ';' : ':';
// npm script中执行需要添加./node_modules/.bin
const newEnv = `${process.cwd()}/node_modules/.bin${SEPARATOR}${process.env.PATH}`
使用https://github.com/npm/node-semver 处理版本字符串
通过当前Nodejs进程的信息并对其进行控制
文档部分
1. 事件
2. 方法
abort(): 使得Nodejs进程立即结束,并生成一个core文件
chdir(firectory):变更Nodejs进程的当前工作目录,如果变更失败会抛出异常
cpuUsage(): 返回当前进程的用户CPU时间和系统CPU时间的对象,此对象包含user和system属性,如果函数执行传递上一次返回的值,则会计算差值,得到的结果是与上一次的差值
cwd: 返回当前Nodejs进程的当前工作目录
disconnect():process.disconnect函数会关闭到父进程的IPC频道,以允许子进程一旦没有其他链接来保持活跃就优雅的关闭,详情请看Child Process 和 Cluster的文档
dlopen:确实
emitWarining: 触发warining事件
exit([code]):退出shell执行环境,0代表的成功(默认),1是异常,正确的使用时通过给process.exitCode 赋值进行进程退出,然后触发所有的exit事件监听器之前,node不会终止,更多code码参见文档
getegid():返回Nodejs进程的有效数字标记的组身份
getuid():返回Nodejs进程的有效数字标识的用户身份
getgid():返回Nodejs进程的数字标识的组身份
getgroups():返回数组,其中包含了补充的组ID,如果包含有效的组ID
hrtime([time]):返回高精度的时间解析值
hrtime.bigint():返回整数类型
initgroups():
process.initgroups()
方法读取/etc/group
文件,并且初始化组访问列表,该列表包括了用户所在的所有组。 该方法需要Node.js进程有root
访问或者有CAP_SETGID
capability才能操作。process.kill(pid, [, signal]):其实这个函数只是发送信号,这点与kill系统调用类似,发送的信号可能是一些与keill目标进程无关的事情
nextTick(callback):将callback函数添加到下一个时间点的队列,一旦当轮事件循环全部完成,则调用下一个时间点的队列中的所有回调
send(message):使用这个方法可以给父进程发送消息,接收到的消息被视为父进程的childProcess对象上一个message事件
setegid(id):为进程设计有效的用户组ID
setuid(id): 为进程设置有效的用户ID
setgid(id):为进程设置有效的组ID
setgroups(groups)
setuid(id):设置进程的用户ID,id可以是一个数值ID也可以是一个用户名字符串,如果已经有一个用户名,在解析为相关数值ID时,此方法阻塞
stderr:(fd 2)属性返回连接到stderr的流,是一个双工流
stdin:(fd 0)属性返回连接到stdin的流,是一个双工流
stdout:(fd 1) 属性返回连接到stdout的流,是一个双工流
unmask([mask]):用于设置Nodejs进程默认创建文件的权限掩码,子进程从父进程继承这个掩码,不传参数时,默认返回当前掩码,如果传递了参数,创建文件掩码被设置为参数值,并且返回之前的掩码
3. 属性
allowedNodeEnvironmentFlags:
arch 同 os.acrch()方法
argv : 返回一个数组,其中包含启动Nodejs进程传入的命令行参数,第一个元素是process.execPath,第二个参数是执行正在执行javascript文件的路径,其余元素将是任何其他命令行的参数
channel: 这个属性保存IPC channel的引用
config:返回一个对象,描述了用于编译当前Nodejs执行程序时涉及到的配置信息,这一执行./configure脚本生成的config.gypi文件的结果是一样的
connected:如果Nodejs进程是由IPC channel方式创建的,只要IPC channel保持连接,这个参数就会返回true,反之,如果调用process.disconeect(),此属性就会返回false
env:返回包含用户环境的对象
execArgv:返回node进程被启动的时候 ,Nodejs特定的命令行选型,这些选项在Process.argv属性返回的数组中不会出现
execPath:返回启动Nodejs进程的可执行文件的绝对路径名
exitCode:此数值将作为进程的退出码,可以显示设置,默认为0
mainModule: 提供一种获取require.main的替代方法,但是这个模块不同于requrie.main进行缓存,
PID:当前进程的PID
platform: 返回字符串,标识Nodejs进程运行其上的操作系统平台
ppid: 返回当前父进程的进程ID
release:返回当前发布的元数据对象,包含源代码等等的URL
title:用于获取或设置当前进程在PS命令中显示的进程名字
Version 和versions两个方法,返回当前Node的版本信息
理解部分
整个 process模块可以分为两部分,一部分是包含每个进程所需要的属性、方法、时间,另一种是就是通过IPC 创建的方法,他们有一些特定的方法、属性,等等,比如disconnect()等等,合理使用这些方法和属性需要分为这两种情景进行使用