# 论如何在 node 使用命令行

演示一下如何在 node 中使用git add .等命令行。

# 项目代码一键上传

在项目根目录创建deploy.js, 使用node运行该文件:

node deploy.js '参数1' '参数2'
1

对的, 启动 node 进程是可以传入参数的:

# 启动 node 进程时传入参数:

process.argvnode自带的属性,这是一个数组,数组的前两个元素是默认值:

  1. process.argv[0]: process.execPath(返回启动 Node.js 进程的可执行文件的绝对路径名)
  2. process.argv[1]: 正在执行的 JavaScript 文件的路径
  3. process.argv[2]、process.argv[3]...: 这里是传入的参数
// process.argv
;[
	'/usr/local/bin/node',
	'/Users/obkoro1/work/itemName/deploy.js',
	'参数1',
	'参数2'
]
1
2
3
4
5
6
7

# deploy.js

执行命令行主要是靠 node 自带模块:child_processexecSync方法来创建一个子进程运行命令。

运行方法如上所示,拷贝下面的代码来试一试就知道了。

# 代码:

// deploy.js
// node内置模块 同步执行命令行
const execSync = require('child_process').execSync
const commitParam = process.argv[2] // commit 参数
myExecSync(`git add . && git commit -m ${commitParam} && git pull && git push`)

/**
 * @description: 同步执行命令行
 * @param {string} cmd 字符串
 * @Date: 2019-08-02 17:43:41
 */
function myExecSync(cmd) {
	// 除了该方法直到子进程完全关闭后才返回 执行完毕 返回
	try {
		var output = execSync(
			cmd,
			{
				encoding: 'utf8',
				timeout: 0,
				maxBuffer: 200 * 1024,
				killSignal: 'SIGTERM',
				cwd: null,
				env: null
			},
			function(err, stdout, stderr) {
				// 进程错误时 回调
				if (err) {
					console.log(`执行命令${cmd}出错:${err}`)
					return
				}
			}
		)
	} catch (err) {
		console.log(`执行命令${cmd}出错:${err}`)
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36