You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Deno运行时获取完整的命令行参数?

在Deno运行时访问完整命令行参数(包括Deno自身参数)

默认情况下,Deno.args仅返回脚本文件之后的命令行参数,像deno run --watch main.ts里的--watch这类Deno CLI自身的参数,不会被传递到脚本的运行时环境,所以直接用Deno.args拿不到。

不过有几种方式可以获取到完整的命令行参数:

  • 类Unix系统读取进程信息
    Linux、macOS等类Unix系统可以通过读取/proc/self/cmdline文件获取当前进程的完整命令行,文件内的参数以空字符\0分隔。示例代码:

    const cmdlineContent = await Deno.readTextFile("/proc/self/cmdline");
    const fullCommandArgs = cmdlineContent.split("\0");
    console.log(fullCommandArgs);
    

    执行deno run --watch main.ts后,会输出类似["/usr/local/bin/deno", "run", "--watch", "main.ts"]的数组,从中就能提取出--watch这类参数。

  • Windows平台调用系统命令
    Windows系统可以通过wmic命令获取进程的完整命令行,示例代码:

    const process = Deno.run({
      cmd: ["wmic", "process", "where", `processid=${Deno.pid}`, "get", "commandline", "/value"],
      stdout: "piped",
      stderr: "piped",
    });
    
    const output = await process.output();
    const stdout = new TextDecoder().decode(output);
    process.close();
    
    const cmdlineMatch = stdout.match(/CommandLine=(.*)/);
    if (cmdlineMatch) {
      const fullArgs = cmdlineMatch[1].split(" ").filter(arg => arg);
      console.log(fullArgs);
    }
    

    执行后同样能拿到包含--watch在内的完整参数数组。

  • 手动通过环境变量传递
    启动脚本前将Deno参数存入环境变量,比如:

    DENO_CLI_ARGS="--watch" deno run main.ts
    

    然后在脚本内读取环境变量:

    const denoArgs = Deno.env.get("DENO_CLI_ARGS");
    console.log(denoArgs?.split(" "));
    

    这种方式需要手动设置环境变量,自动化程度较低,但跨平台通用。

内容的提问来源于stack exchange,提问作者lviggiani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 17:17:11