npm - 如何从任何地方使用安装在 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_root
,npx doit
就可以了。在子包中,npx
(显然)所做的是它首先安装myutils
在本地node_modules
,运行脚本,然后卸载它。每次。
我想要一种方法(使用 npx 或其他技术)我可以doit
在任何子目录中运行,而不会产生所有烦人的开销。
解决方案
如果您知道monorepo的根目录名称(似乎很可能,这里假设) ,将这个答案(https://stackoverflow.com/a/15157360/500902 )的想法扩展到前面的问题/internal
alias basex='_x=$(pwd); PATH="${_x%%/internal/*}/internal/node_modules/.bin:$PATH"'
然后从monorepo的任何地方,你可以做
basex doit
推荐阅读
- wav - Sox 文件格式失败
- docker - Rancher、Kubernetes 和 StorageOS:持久存储、卷挂载问题?
- ios - 如何创建可以从代码中的任何位置操作和访问的变量?
- excel - Excel 中的链接表和添加列
- css - CSS - 媒体查询被忽略
- java - JAX-RS (Jersey) 和 Jackson 没有正确序列化 LocalDate
- vba - 反向地理编码宏:未定义用户定义类型
- ajax - AJAX 成功函数和错误函数
- c# - 实体框架 6 - 应用自定义 SQL 表达式来选择要执行的 Sql 列
- tsql - 在多个替换和子字符串中将字段转换为十进制