# 论如何在node使用命令行
演示一下如何在node中使用git add .
等命令行。
# 项目代码一键上传
在项目根目录创建deploy.js
, 使用node
运行该文件:
node deploy.js '参数1' '参数2'
1
对的, 启动node进程是可以传入参数的:
# 启动node进程时传入参数:
process.argv是node
自带的属性,这是一个数组,数组的前两个元素是默认值:
process.argv[0]
:process.execPath
(返回启动 Node.js 进程的可执行文件的绝对路径名)process.argv[1]
: 正在执行的 JavaScript 文件的路径process.argv[2]、process.argv[3]...
: 这里是传入的参数
// process.argv
[ '/usr/local/bin/node',
'/Users/obkoro1/work/itemName/deploy.js',
'参数1', '参数2' ]
1
2
3
4
2
3
4
# deploy.js
执行命令行主要是靠node自带模块:child_process
的execSync方法来创建一个子进程运行命令。
运行方法如上所示,拷贝下面的代码来试一试就知道了。
# 代码:
// 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
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