Skip to content

工作目录

一般执行命令时均是以当前目录作为执行起点。

MixCli允许在命令行通过--work-dirs来指定命令的执行时的工作目录,即当前目录。

示例:

开发了一个init命令执行一些初始化操作。

js
const { MixCli } = require("mixcli");
const cli = new MixCli({
    name:"mycli"
    // ...其他配置参数
});

cli.run();      // 执行命令行应用
const { MixCli } = require("mixcli");
const cli = new MixCli({
    name:"mycli"
    // ...其他配置参数
});

cli.run();      // 执行命令行应用
js
const {MixCommand} = require("mixcli");
module.exports = (cli)=>{    
    const initCommand = new MixCommand({
        name:"init",
        description:"初始化项目", 
        action:async (options)=>{
            console.log("init")
            console.log("cwd=",process.cwd());
        }
    })
   return initCommand
}
const {MixCommand} = require("mixcli");
module.exports = (cli)=>{    
    const initCommand = new MixCommand({
        name:"init",
        description:"初始化项目", 
        action:async (options)=>{
            console.log("init")
            console.log("cwd=",process.cwd());
        }
    })
   return initCommand
}

上面的init会在当前目录执行初始化操作,我们可以通过指定--work-dirs来让该命令在其他多个目录执行。

bash
# 当前目前目录是d
d:> mycli init --work-dirs ./dir1,./dir2,./dir3
# 当前目前目录是d
d:> mycli init --work-dirs ./dir1,./dir2,./dir3

执行以上命令相当于在./dir1./dir2./dir3三个目录下执行init命令,显示如下:

bash
# 第1次执行
init 
cwd= D:\dir1
# 第2次执行
init
cwd= D:\dir2
# 第3次执行
init
cwd= D:\dir3
# 第1次执行
init 
cwd= D:\dir1
# 第2次执行
init
cwd= D:\dir2
# 第3次执行
init
cwd= D:\dir3

说明

  • --work-dirs的值可以是相对路径,也可以是绝对路径。
  • --work-dirs指定的目录必须存在,否则会忽略该目录。
  • 当指定--work-dirs时,会依次切换到--work-dirs指定的目录,然后执行命令。
  • --work-dirs允许指定多个值,多个值之间用,分隔,然后依次执行。
  • 执行完成后会切换回原来的目录。