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

如何在npm工作区子包上下文执行根目录定义的npm脚本?

npm工作区复用根目录脚本的解决方案

方法1:让脚本接受目标路径参数

修改根目录package.json的clean脚本,使其支持传入子包路径:

{
  "workspaces": ["packages/*"],
  "scripts": {
    "clean": "rm -rf $1/lib $1/dist"
  },
  "private": true
}

在根目录执行以下命令,清理指定子包:

npm run clean -- packages/example

若要批量清理所有子包,可修改脚本为:

"clean": "for pkg in packages/*; do rm -rf \"$pkg/lib\" \"$pkg/dist\"; done"

直接运行npm run clean即可完成所有子包的清理。

方法2:指定工作目录执行根目录脚本

如果脚本逻辑复杂,不想修改脚本内容,可通过--workdir(npm 8+支持)指定执行目录,同时用--prefix指向根目录调用脚本:

npm run --prefix . clean --workdir packages/example

或者通过cd切换目录后执行:

cd packages/example && npm run --prefix ../.. clean

这两种方式都会让根目录的clean脚本在packages/example的上下文执行,从而删除该目录下的lib和dist。

方法3:通过npm exec跨工作区调用

使用npm exec在目标子包的工作区中调用根目录的脚本:

npm exec --workspace packages/example -- npm run --prefix ../.. clean

这种方式会进入子包的工作环境执行根目录的clean脚本,实现预期效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:42:52