乐闻世界logo
搜索文章和话题

How to pass arbitrary argument with pnpm

5 个月前提问
3 个月前修改
浏览次数82

2个答案

1
2

在使用 pnpm 执行命令时,如果您需要向脚本或命令传递任意参数,通常可以在命令后直接添加这些参数。但是,如果需要将参数传递给通过 pnpm 运行的npm脚本,则需要在参数前加上 -- 来确保参数正确传递。

例如,如果您有一个名为 start 的npm脚本,您想传递一些任意参数给它,您可以这样做:

sh
pnpm start -- --user=yourname --port=8080

在这个例子中,--user=yourname--port=8080 是将要传递给 start 脚本的参数。-- 确保 pnpm 会把后面的参数原封不动地传递给 start,而不是被 pnpm 本身消费。

另一个例子,如果你要使用 pnpm exec 命令执行一个工具,并且需要传递参数给那个工具,你通常不需要 --。例如:

sh
pnpm exec some-tool --option=value

在这种情况下,--option=value 是直接传递给 some-tool 的参数。

请注意,pnpm的行为可能会与npm和yarn略有不同,但它们都支持使用 -- 分隔符来传递额外的参数。

2024年6月29日 12:07 回复

I am not sure why it throws an error. Sounds like a bug. However, this will work:

shell
pnpm run build --foo=bar

But it will not create the npm_config_foo env variable. It will just append the option to the executed script. So if your build script is webpack, then pnpm will run:

shell
webpack --foo=bar

So, it is basically like running npm run build -- --foo=bar. Or like running yarn build --foo=bar

You can read about this also in the pnpm docs: https://pnpm.io/cli/run#options

2024年6月29日 12:07 回复

你的答案