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

如何从根目录执行子目录package.json中的yarn/npm脚本?

解决方案

方法1:正确使用yarn的--cwd参数

你之前用--cwd没达到预期是因为缺少run命令,正确用法是在根目录的package.json里定义一个通用入口脚本:

{
  "scripts": {
    "website": "yarn --cwd website run"
  }
}

之后执行网站的任意脚本时,只需要在命令后追加对应指令即可:

  • 启动开发服务器:yarn website start
  • 构建生产版本:yarn website build
  • 部署站点:yarn website deploy
    这种方式不需要重复定义每个子脚本,一个入口就能覆盖所有需求。

方法2:用Shell位置参数简化调用

如果不想依赖yarn的--cwd参数,也可以通过Shell位置参数传递命令:

{
  "scripts": {
    "website": "cd website && yarn $1"
  }
}

执行逻辑和方法1完全一致,比如yarn website start就能触发网站目录下的start脚本,这种写法对npm等其他包管理器兼容性更好,只需把yarn替换成对应命令即可。

方法3:将website纳入monorepo workspace(可选)

如果允许把website目录加入monorepo的workspace管理范围,可以修改根目录package.json的workspaces配置:

{
  "workspaces": [
    "packages/*",
    "website"
  ]
}

之后就能直接用yarn的workspace命令调用网站脚本:

  • yarn workspace website start
  • yarn workspace website build
    这种方式的优势是可以统一管理所有包的依赖,但需要确认website的依赖不会和monorepo内其他包产生冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 03:50:24