Skip to content

node 执行 cmd 命令

使用 child_process 包的 exec 命令即可

值得注意的是,每次执行 exec 函数,都相当于重新开启一个 cmd 窗口

因此需要注意每次执行命令所在的路径

这里简要记录 exec ,还有其它方法,可执行 .sh,.js 文件等

javascript
const { exec } = require("child_process");
const {resolve} = require("path");

const build = 'npx vitepress build docs'
exec(build, (err, stdout, stderr) => {
    if (err) {
        console.log(err)
        return
    }
    console.log('成功!')
})

// 这里需注意:如果 exec(`cd ${distPath}`) 
// 然后再 exec('git init')
// 则 git init 会在当前 js 路径下执行,而不会在 distPath 下
// 因此需要配合 && 关联命令行
/* 其中 && 和 || 等同短路语句:
*  & 不关心两个命令成功失败
*  && 前面命令成功,后面命令才执行
*  || 前面失败,后面才执行,前面成功后面不执行
* */
const distPath = resolve(__dirname, './docs/.vitepress/dist')
const gitInit = `cd ${distPath} && git init`
exec(gitInit, (err, stdout, stderr) => {
    if (err) {
        console.log(err)
        return
    }
    console.log('git init 成功!')
})

const gitAdd = `cd ${distPath} && git add -A`
exec(gitAdd, (err, stdout, stderr) => {
    if (err) {
        console.log(err)
        return
    }
    console.log('git add 成功!')
})
0