代码之家  ›  专栏  ›  技术社区  ›  valerii15298

dotenv cli如何使用“-”(双破折号)运行命令?

  •  -1
  • valerii15298  · 技术社区  · 4 年前

    api 带脚本 dev 在里面 package.json 我首先尝试的是:

    dotenv -e .\.env -- pnpm dev --filter api
    

     ERR_PNPM_RECURSIVE_EXEC_FIRST_FAIL  not found: dev
    

    dotenv -e .\.env -- pnpm -- dev --filter api
    

    它运行良好。

    -- 表示命令选项结束,之后只接受位置参数。那么为什么我需要使用它两次才能让我的命令工作呢?为什么会这样?

    0 回复  |  直到 4 年前
        1
  •  3
  •   mklement0    4 年前

    问题是当你打电话的时候 来自PowerShell (与来自不同 cmd.exe 命令名 dotenv 解析为 PowerShell脚本 即 dotenv.ps1

    当PowerShell调用PowerShell时- 命令-包括 .ps1 文件-它自己的参数binder解释(第一个) -- 参数和 删除它 从未见过 . (语义 -- 类似于Unix实用程序: -- 位置的 例如 -foo .)

    因此,不幸的是,您需要指定 为了通过一个 -- 实例到 脚本本身:

    # The first '--' is removed by PowerShell's parameter binder.
    # The second one is then received as an actual, positional argument by
    # dotenv.ps1
    dotenv -e .\.env -- -- pnpm dev --filter api
    

    或者,假设 dotenv.cmd ,即a CLI的版本也存在(也位于中列出的目录中) $env:PATH ),您可以通过显式调用它来绕过此问题,而不是 .ps1 ; 外部程序 命令提示符 ),PowerShell有 不 -- :

    # Calling the batch-file form of the command doesn't require
    # passing '--' twice.
    dotenv.cmd -e .\.env -- pnpm dev --filter api
    

    推荐文章