Appearance
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