首页 > 解决方案 > 如何从任何地方使用安装在 monorepo 的 npm 根目录中的可执行文件?

问题描述

这个问题(How to use executables from a package local installed in node_modules?)是几年前问的,正确答案一般就在npx这几天。但是在具有多个子包的 monorepo 中,每个子包具有不同的依赖关系,虽然它可以工作,但它很烦人。

my_pkg_root/ package.json
   sub_pkg_1/ package.json
   sub_pkg_2/ package.json
   sub_pkg_3/ package.json

或其他更深的嵌套结构。如果在根目录中安装npm i myutils提供doit,那么在my_pkg_rootnpx doit就可以了。在子包中,npx(显然)所做的是它首先安装myutils在本地node_modules,运行脚本,然后卸载它。每次。

我想要一种方法(使用 npx 或其他技术)我可以doit在任何子目录中运行,而不会产生所有烦人的开销。

标签: npmnpx

解决方案


如果您知道monorepo的根目录名称(似乎很可能,这里假设) ,将这个答案(https://stackoverflow.com/a/15157360/500902 )的想法扩展到前面的问题/internal

alias basex='_x=$(pwd); PATH="${_x%%/internal/*}/internal/node_modules/.bin:$PATH"'

然后从monorepo的任何地方,你可以做

basex doit

推荐阅读