首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

在使用 monorepo 管理的项目中,如果你的可执行文件被安装在 npm 根目录中,你可以通过以下几种方式从任何地方使用它:

1. 使用 npx

npx 是 npm 5.2.0 及以上版本附带的一个工具,它可以运行本地安装的包的可执行文件,而不需要全局安装。

代码语言:javascript
复制
npx your-executable

如果你的可执行文件名不是默认导出的,或者你想传递参数给它,你可以这样做:

代码语言:javascript
复制
npx your-package-name your-executable --arg1 value1 --arg2 value2

2. 使用 npm exec

从 npm 7 开始,你可以使用 npm exec 命令来运行本地安装的包的可执行文件。

代码语言:javascript
复制
npm exec your-executable

同样,如果你需要传递参数,可以这样做:

代码语言:javascript
复制
npm exec your-package-name your-executable -- arg1 value1 --arg2 value2

3. 使用 yarn

如果你使用的是 Yarn 作为包管理器,你可以使用 yarn run 命令来运行本地安装的包的可执行文件。

代码语言:javascript
复制
yarn run your-executable

如果你的可执行文件不在 package.jsonscripts 部分定义,你可以直接运行:

代码语言:javascript
复制
yarn exec your-package-name your-execative

4. 使用绝对路径

你也可以通过找到可执行文件的绝对路径来运行它。首先,你需要找到可执行文件的位置。通常,它会在 node_modules/.bin 目录下。

代码语言:javascript
复制
./node_modules/.bin/your-executable

如果你在不同的目录下工作,可以使用 npm binyarn bin 来找到当前包的 .bin 目录。

代码语言:javascript
复制
$(npm bin)/your-executable
# 或者
$(yarn bin)/your-executable

5. 配置环境变量

你可以在你的 shell 配置文件(如 .bashrc, .zshrc)中添加 node_modules/.bin 目录到你的 PATH 环境变量中,这样你就可以在任何地方直接运行可执行文件。

代码语言:javascript
复制
export PATH="./node_modules/.bin:$PATH"

然后,你可以直接运行:

代码语言:javascript
复制
your-executable

请注意,这种方法可能会在不同的项目目录中引起冲突,因此建议仅在本地开发环境中使用。

选择哪种方法取决于你的具体需求和你使用的工具链。通常,npxnpm exec 是最方便的方法,因为它们不需要修改环境变量,并且可以自动处理依赖关系。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

monorepo--依赖

选型 monorepo 后,并不是无脑按照其指导来全部切换,为了更平稳过度,我们规划了以下几步: 第一步:采用 yarn workspace 来解决依赖问题(npm install ...//github.com/npm/npm/issues/2974 monorepo 会产生大量 commit、branch、tag、git 追踪文件也会增多。...在项目根目录monorepo找不到模块 “B@2.0”(无法遵循符号链接 – symlink) “package-1” 找不到模块 A@1.0(不知道上面 “monorepo模块树)...为了使这个 monorepo 项目能够任何地方可靠地找到任何模块,它需要遍历每个 “node_modules” 树:monorepo/nodemodules和 monorepo/packages/package.../bin/cli.js" } yarn/npm link 命令允许我们在本地 “symlink a package folder”,它将在本地安装 package.json bin 字段列出任何命令

2.6K31

0开始使用pnpm构建一个Monorepo方式管理demo

这篇文章就使用pnpm构建一个简单Monorepo方式管理项目。 什么是Monorepo?什么是pnpm?Q:什么是Monorepo?...A:pnpm就是一个包管理工具,原生支持Monorepo,比npm和yarn更快一些,其他可以参考官网和神三元大佬另一篇文章:为什么现在我更推荐 pnpm 而不是 npm/yarn?...首先你需要有pnpm这个工具,安装的话可以官网找方法,或者直接使用npm安装,命令如下:npm i pnpm -g现在我们开始搞事情。...第一步,创建一个项目的根目录,这里就叫monorepo-demo,咋创建都可,这里使用是命令:mkdir monorepo-demo第二步,初始化package.json,这个没啥说,命令如下:pnpm...其实到这基本工作就准备好了,现在介绍一下如何安装依赖,如何在packageA引用packageB。

1.4K20
  • 基于 lerna 实现 Monorepo 项目管理

    答案就是 Monorepo! 在字节跳动内部百科词条对于 Monorepo 定义如下: Monorepo 是一种将多个项目代码存储在一个仓库里软件开发策略。...2.2 Lerna + Yarn Workspaces Lerna 默认会使用 NPM 作为包管理器,但使用 yarn 作为 Lerna 默认包管理器是更推荐方式。...为此可以给团队申请一个公共账号,通过 npm token create 创建一个权限 token,放到项目根目录 .npmrc 文件。 之后无论是哪个开发者维护,都将默认使用团队账号发包更新。...总结 基于 Lerna 构建 Monorepo 项目的心智成本不高,但需要我们对于其中流程、生命周期、NPM Scripts 等知识有一定认识和把握,需要构建者能在流程、管理寻找需求共性和约束规范...本文根据搭建流程来简述 Monorepo 一种方案,在前端工程化,构建者还需要思考是否存在优化空间以及斟酌细节?

    1.7K20

    基于 Lerna 管理 packages Monorepo 项目最佳实践

    项目仓库根目录上就三个子模块文件夹,分别对应三个 package,在熟悉了构建和发布流程后,有点傻了。...使用webpack、babel和uglifyjs把 pkg-main src 编译到 dist 最后使用拷贝文件方式,把pkg-main、pkg-a、pkg-b编译后文件组装到 pkg-npm...在前端开发环境,多 Git Repo,多 npm 则是这个理想阻力,它们导致复用要关心版本号,调试需要 npm link。而这些是 MonoRepo 最大优势。...因为这是整个工程开发依赖,所以在根目录安装: npm i -D commitizen npm i -D cz-lerna-changelog 安装完成后,在 package.json 增加 config...npm run b 用来对各 pacakge 执行 babel 编译, src 目录输出出 dist 目录,使用根目录配置文件 babel.config.js。

    3K61

    关于现代包管理器深度思考——为什么现在我更推荐 pnpm 而不是 npmyarn?

    支持 monorepo 随着前端工程日益复杂,越来越多项目开始使用 monorepo。...之前对于多个项目的管理,我们一般都是使用多个 git 仓库,但 monorepo 宗旨就是用一个 git 仓库来管理多个子项目,所有的子项目都存放在根目录packages目录下,那么一个子项目就代表一个...pnpm 与 npm/yarn 另外一个很大不同就是支持了 monorepo,体现在各个子命令功能上,比如在根目录下 pnpm add A -r, 那么所有的 package 中都会被添加 A 这个依赖...三、依赖管理 npm/yarn install 原理 主要分为两个部分, 首先,执行 npm/yarn install之后,包如何到达项目 node_modules 当中。...由于依赖提升存在,npm/yarn 会把 X 放到根目录 node_modules ,这样 C 在本地是能够跑起来,因为根据 node 包加载机制,它能够加载到 monorepo 项目根目录

    3K20

    pnpm monorepo实践

    很显然这样在开发以及代码仓库协同上肯定有弊端,而 monorepo 正是解决这种问题,将所有的项目在一个代码仓库,即单一代码库(monorepos)。...这只是 monorepo 一个应用场景例子,这里有一个更好例子 前端工程化:如何使用 monorepo 进行多项目的高效管理,更多可以参考使用 monorepo 开源项目来了解。...例如根目录下执行 npm run docs:dev 便会执行 docs/package.json dev脚本,同理build和serve也是一样。...可以说当使用 monorepo 作为项目管理时,每个模块就相当于按照一个 npm 包发布方式创建,而不是像 src/utils 那么随便了,而开源项目大部分都是要作为 npm方式发布使用 monorepo...相关文章​ 5 分钟搞懂 Monorepo - 简书 (jianshu.com) 前端工程化:如何使用 monorepo 进行多项目的高效管理 pnpm workspace Turborepo:发布当月就激增

    1.6K10

    基于 Yarn WorkSpace + Lerna + OrangeCI 搭建 Typescript Monorepo 项目实践

    而在这次在迁移搭建全民 K 歌基础库实践,在诸如 Orange CI 自动发布 npm 包等问题上就遇到了不少阻碍,我们把经验总结记录如下。...Monorepo:一种管理组织代码方式,其主要特点是多个项目的代码存储在同一个 git repo Multirepo:一种管理组织代码方式,其主要特点是多个项目的代码存储在不同 git repo...依赖管理 由于 Monorepo 特性,各个 package 之间可能会形成相互依赖,手动进行 npm link 对于多 package Monorepo 来说,无疑是个巨大负担,因此我们需要一个自动化...这里根目录 tsconfig.json paths是这里神奇之处:它告诉 TypeScript 编译器,每当一个模块尝试 monorepo 导入另一个模块时,它都应该 packages 文件夹解析它...发版时候需要更新版本号,这时候如何更新版本号就是个问题,一般来说,版本号都是遵循 semver [5]语义。

    3.9K42

    Nest.js 框架实战之认识与搭建(一)

    (如果 npm 镜像源比较慢也可以更改镜像源或者使用 yarn) npm i -g @nestjs/cli nest new nest-demo 复制代码 根据提示完成构建后,会得到一个基础项目结构,...cd nest-demo npm run start:dev 复制代码 此命令会启动 HTTP 服务监听定义在 src/main.ts 文件定义端口号。...注意:Nest 所有特性都与代码组织模式无关。不同组织模式唯一影响是如何组合项目以及如何生成构建构件,所有其他功能, CLI 到核心模块再到附加模块,在任何一种模式下都是相同。 2....Nest 项目实践 在 Nest 可以在任何时候轻松地标准模式切换到 Monorepo 模式,因此您可以延迟此决策,直到其中一种方法好处变得更加明显。...nest g library my-library 复制代码 库是在 Monorepo 根目录 libs 文件夹下管理,将会生成如下目录结构,可以看到构建文件与应用程序生成文件略有差异。

    1.5K21

    Monorepo——探秘源码管理新姿势!

    这里,总结比较常见问题,并结合Monorepo优劣势来做出决策,选择是否采用Monorepo来管理团队代码: 项目的代码规模如何? 项目的开发人员规模如何? 项目是否依赖权限管理?...而使用monorepo功能,仅仅需要在根目录创建一个pnpm-workspace.yaml文件,并填写需要管理目录,而之后这些目录将自动纳入pnpm工作空间,并由它进行管理。...install pnpm -g 并在根目录package.json添加如下脚本来限制包安装: // 此行命令将限制使用 pnpm 来进行 install 操作"scripts": {...package - 'packages/**' 在根目录package.json添加shared作为依赖模块,后续安装后即可在其他模块使用: "dependencies": { "@my-scope...技术和策略上选择从来都不是非此即彼,而是依据团队以及业务发展去组合和拓展,在已有的基础上提出想法,并在实践不断完善各阶段流程和技术选型,失败总结经验,并将经验转化为下一次进步。

    2.1K22

    lerna最佳实践

    multirepo 指的是将模块分为多个仓库,monorepo 指的是将多个模块放在一个仓库。...最早是 Babel 自己用来维护自己 monorepo 并开源出一个项目,针对使用 git 和 npm 管理多软件包代码仓库工作流程进行优化,解决多个包互相依赖,且发布需要手动维护多个包问题。...清理环境 使用 lerna clean 可以清理每个 package 下 node_modules,但是没有办法清理根目录 node_modules 目录,因此,我们可以在根目录 package.json...通过这种方式安装依赖包是装在根目录 node_modules 。...参考链接: erna 使用指南 lerna+yarn workspace+monorepo项目的最佳实践 Lerna+Yarn workspace管理多npm Yarn Workspace使用指南

    1.9K20

    【总结】1761- 了解并实践 Monorepo 和 pnpm

    为什么使用monorepo 什么是monorepo 简单来说就是,将多个项目或包文件放到一个git仓库来管理。 目前比较广泛应用是yarn+lerna方式实现monorepo管理。...包 pnpm使用 为什么用pnpm 关于为什么越来越多的人推荐使用pnpm,可以参考这篇文章[1] 这里简单列一下pnpm相对于yarn/npm优势: 安装速度最快(非扁平包结构,没有yarn/npm...如果你还有使用npm/yarn场景,那么,可以推荐使用 **ni**[3] 这个工具,它可以帮你自动识别项目使用包管理工具,你只需要一行命名就搞定了。...但是每个monorepo根目录下必须包含pnpm-workspace.yaml文件。...changesets使用,它主要作用有两个: 管理包版本 生成changelog 对于monorepo项目使用它会更加方便,当然单包也可以使用

    49920

    带你了解并实践monorepo和pnpm,绝对干货!熬夜总结!

    为什么使用monorepo 什么是monorepo 简单来说就是,将多个项目或包文件放到一个git仓库来管理。 目前比较广泛应用是yarn+lerna方式实现monorepo管理。...包 pnpm使用 为什么用pnpm 关于为什么越来越多的人推荐使用pnpm,可以参考这篇文章[1] 这里简单列一下pnpm相对于yarn/npm优势: 安装速度最快(非扁平包结构,没有yarn/npm...但是每个monorepo根目录下必须包含pnpm-workspace.yaml文件。...changesets使用,它主要作用有两个: 管理包版本 生成changelog 对于monorepo项目使用它会更加方便,当然单包也可以使用。...Commitlint如何配置 我们可以通过配置git cz命令进行规范代码提交,那么,如果其他同事依然使用是git commit来提交代码的话,那么,提交信息就会比较乱。

    6.1K64

    Vue3源码01 : 代码管理策略-monorepo

    刚才讲了lerna boostrap这个命令功能,下面简要介绍下如何配置lerna。 在根目录下新建一个lerna.json文件,按照惯例lerna默认使用npm。...不同是,在lerna.json文件需要将npmClient值变更为yarn。既然lerna和npm结合或者yarn结合实现功能是如此相似,那我们如何选择呢?...接着介绍了管理monorepo几种方案,原始手动管理到lerna + yarn 、pnpm两种优良管理方式。文末介绍了Vue3关于pnpm管理monorepo类型项目的相关配置。...限于篇幅,文中并未从细节处系统性去描述如何配置文件,如何执行命令,笔者后续会产出一系列关于前端工具文章,目前就先到这里。...monorepo认知模糊而阻碍我们进入Vue3源码世界,朋友们可以查阅文档了解这些工具具体使用方式。

    1.2K11

    前端工程化实践:Monorepo与Lerna管理

    Lerna简介Lerna是一个命令行工具,用于在Monorepo管理多包项目。它提供了版本管理和发布功能,使得在单个仓库管理多个npm包变得简单。...Lerna核心概念有:Packages:Monorepo独立npm包。Versions:每个包可以有自己版本,可以是固定或共享。...然后,在项目根目录安装Lerna:npm install --save-dev lerna# 或yarn add --dev lerna初始化Lerna项目在项目根目录运行以下命令初始化Lerna:npx...{ "concurrency": 4}Lerna还使用npmpackage-lock.json或yarn.lock文件来确保每次安装时依赖一致性。...当lerna bootstrap执行时,它会按照文件锁定版本安装依赖,保证所有开发者在本地构建时使用相同依赖版本。

    21900

    pnpm + workspace + changesets 构建你 monorepo

    one more thing,就是好奇心了 如何使用 pnpm 来搭建 menorepo 工程 安装 pnpm $ npm install -g pnpm ⚠️v7版本pnpm安装使用需要node...npm init 命令,初始化两个工程,package.json name 字段分别叫做 @qftjs/menorepo1 和 @qftjs/monorepo2(PS:@qftjs是提前在npm上创建好组织...,可以看到 dependencies 字段多了对 @qftjs/monorepo2 引用,以 workspace: 开头,后面跟着具体版本号。...只允许pnpm 当在项目中使用 pnpm 时,如果不希望用户使用 yarn 或者 npm 安装依赖,可以将下面的这个 preinstall 脚本添加到工程根目录 package.json: {...: 在每次 version 变动时一定无理由 patch 抬升依赖他那些包版本,防止陷入 major 优先未更新问题 如何使用changesets 一个包一般分如下几个步骤: 为了便于统一管理所有包发布过程

    4.6K30

    Multirepo 到 Monorepo 袋鼠云数栈前端研发效率提升探索之路

    前端代码管理一直是困扰不少前端开发团队难题,开发到发布整体工作流程,除了常规技术问题外,往往还伴随着沟通成本、维护成本及协作效率等问题。...● 工具 / 配置不统一,沟通成本高 各个仓库所使用工具和配置没有进行统一,在进行配置更新等过程,往往需要同步到各个产品线负责人,沟通成本较高。...这些问题严重拖慢了数栈前端团队开发到发布整体流程,同时增加了团队维护成本和沟通成本,如何寻找新工具解决这些问题已迫在眉睫,在进行了深入调研和多次讨论过程,新项目管理方式 Monorepo...● 包管理工具 - pnpm 在前端社区npm、 yarn、 pnpm 三个包管理工具三足鼎立,而我们最终选择了 pnpm 原因在于:pnpm 对 monorepo 有着较好支持,同时对比其他两个包管理工具...: Monorepo 解决了之前使用 Multirepo 时存在问题,帮助我们更好管理代码,接下来我们将结合 Multirepo 存在问题来详细说明 Monorepo如何在数栈产品中落地

    48120

    Create React App 源码揭秘

    monorepo管理 如果对monorepo和lerna已经比较了解,可以直接移步CreateReactApp架构 Monorepo是管理项目代码一个方式,指在一个项目仓库(repo)管理多个模块/...查看效果 运行下面脚本 npm run create -- myProject 可以在当前项目根目录看到myProject目录结构。...// 这经常会引起混乱,因为我们只使用babel处理src/文件。...这经常会引起混乱,因为我们只使用babel处理src/文件。 为了解决这个问题,我们阻止你src/导入文件——如果你愿意, 请将这些文件链接到node_modules/,然后让模块解析开始。...CHANGELOG梳理异常折腾,无法很好自动关联各个模块变动联系,基本靠口口相传 使用monorepo管理缺点 统一构建工具,对构建工具提出了更高要求,要能构建各种相关模块 仓库体积会变大 使用

    3.6K20
    领券