Skip to content

process

进程,可以获得运行时的一些环境和参数

process.platform

获取平台,Windows 系统值是 win32,Mac 系统值是 darwin

process.cwd

current working directory,当前工作目录,运行时产生的一个路径,指向执行指令的位置, 是可以改变的。__dirname 是绝对路径,指向当前文件所在的目录,是不变的。Node 中相对路径, 相对的是当前工作目录,不是文件目录。

js
fs.readFile('./foo.txt') // 相对于 process.cwd,不保证找到这个为文件。
fs.readFile(__dirname + './foo.txt') // 总是准确的

process.argv

用户执行时传递的参数 webpack --port 3000 --config webpack.config.js

js
[
  'D:\\node\\node.exe', // node.exe
  'C:\\Users\\xNoRain\\Desktop\\node\\3-global', // node 执行的文件
  '--port', // 除前两项外其余都为参数
  '3000',
  '--config',
  'webpack.config.js'
]

const args = process.argv.slice(2)
const argMap = {}

for (let i = 0, l = args.length; i < l; i++) {
  const arg = args[i]

  if (arg.startsWith('--')) {
    map[arg.slice(2)] = args[++i]
  }
}

// commander.js
const { program } = require('commander');
program.option('-p, --port <n>', 'set port')
program.option('-c, --config <char>', 'set config')
program.parse()._optionValues // { port: '3000', config: 'webpack.config.js'}

// 不生效
program.command('foo').description('bar').action(() => {
  console.log('baz')
})

// 不生效
program.on('--help', () => {
  console.log('see')
})

process.env

获取环境

js
// 命令行中通过 set NODE_ENV=development 设置当前环境的临时变量
// 相当于 process.env.NODE_ENV = 'development'
// Mac系统中使用 export NODE_ENV=development 来设置

// cross-env.js
// 实现设置全局环境
cross-env NODE_ENV=development node demo.js
cross-env foo=foo node demo.js