process 对象
官网解释:process 对象是一个全局变量,它提供当前 Node.js 进程的有关信息,以及控制当前 Node.js 进程。 因为是全局变量,所以无需使用 require()。
而 process 通常用于:
获取进程信息(资源使用、运行环境、运行状态) 执行进程操作(监听事件、调度任务、发出告警)
常用属性
process.env
process.env 返回一个包含用户环境信息的对象,可以拿到用户环境的一些环境变量。
process.env 允许用户对当前环境变量进行添加、删除操作,所以我们可以在 process.env 上挂载一些变量标识当前的环境,比如最常见的用 process.env.NODE_ENV 区分 development 和 production,但其实 process.env 中并不存在 NODE_ENV 这个东西,NODE_ENV 是用户自定义的一个环境变量。
不同的环境有不同的修改方式: windows
#node中常用的到的环境变量是NODE_ENV,首先查看是否存在
set NODE_ENV
#如果不存在则添加环境变量
set NODE_ENV=production
#环境变量追加值 set 变量名=%变量名%;变量内容
set path=%path%;C:\web;C:\Tools
#某些时候需要删除环境变量
set NODE_ENV=
linux 或者 mac
#node中常用的到的环境变量是NODE_ENV,首先查看是否存在
echo $NODE_ENV
#如果不存在则添加环境变量
export NODE_ENV=production
#环境变量追加值
export path=$path:/home/download:/usr/local/
#某些时候需要删除环境变量
unset NODE_ENV
#某些时候需要显示所有的环境变量
env
直接修改 package.json 文件
"scripts": {
"dev": "NODE_ENV=development webpack-dev-server",
"build": "NODE_ENV=production webpack",
// 跨平台可以使用 cross-env
"dev": "cross-env NODE_ENV=development webpack-dev-server"
},
如果需要自定义的参数很多,我们可以创建.env 文件来添加自定义的环境变量。 通过 dotenv 依赖包可以很方便的将其加到 process.env 下
require('dotenv').config();
const xxx = process.env.xxx;
process.argv
process.argv 属性返回一个数组,这个数组包含了启动 Node.js 进程时的命令行参数。
主要用于在终端通过 Node 执行命令的时候,通过 process.argv 可以获取传入的命令行参数,返回值是一个数组,数组组成如下:
第一个元素:process.execPath,即启动 Node.js 进程的可执行文件所在的绝对路径。 第二个元素:当前执行的 JavaScript 文件路径。 其余元素:其他命令行参数。
当我们想要拿到传入的命令行的参数时,使用 slice 方法直接截取就行。
const args = process.argv.slice(2);
我们可以借助一些工具来解析,常见的解析工具有 optimist、yargs、minimist、mri 等(optimist 和 yargs 内部使用的解析引擎是 minimist)。
生命周期事件: process.env.npm_lifecycle_event
判断当该文件执行时所处哪个生命周期事件
const ENVIRONMENT = process.env.npm_lifecycle_event;
// npm run build
if (ENVIRONMENT === 'build') {
console.log('Running your build tasks!');
}
// npm run dev
if (ENVIRONMENT === 'dev') {
console.log('Running the dev server!');
同;
}
process.env.npm_package_xxx
通过 process.env.npmpackage[name] 拿到 package.json 中的 [name] 字段
{
"name": "foo",
"version": "1.2.5",
"scripts": {
"view": "node view.js"
}
}
console.log(process.env.npm_package_name); // foo
console.log(process.env.npm_package_version); // 1.2.5
常见方法
process.cwd()
process.cwd() 返回的是当前 Node.js 进程执行时的工作目录,process.cwd() 与 **dirname 的区别在于 **dirname 返回源代码所在的目录。