javascript - npm 模块 - 是否可以拆分 bin 和 lib 依赖项?
问题描述
假设我已经在 npm 上发布了一个 nodejs 模块。这很简单,您安装并导入它,并给定一个字符串和一个配置对象,它会返回一个字符串。
现在,我想让它作为本地模块和全局模块都可用:我在 package.json 中的 bin 中添加了一个脚本。该脚本导入并使用本地函数并打印结果。为了处理参数和配置对象,我使用 npm yarg 作为依赖项。
问题是这样的:如果我想将我的模块安装为本地,则不需要 yarg 依赖项,因为它仅在模块用作全局时使用。所以很浪费空间。
有没有办法只在我的模块安装为全局模块而不是本地模块时才安装 yarg 依赖项?
解决方案
无论如何,这不是一种常见的做法。在某些情况下,本地安装的包可以用作 CLI 可执行文件,特别是作为 NPM 脚本的一部分。所有应该在全球范围内使用的流行软件包,npm
或者grunt
也可以在本地安装和运行。
没有可靠的方法来检测全局安装了一个包。这可以通过检测模块驻留在node_modules
全局位置来潜在地完成。可能存在取决于特定系统的警告。
的占用空间yargs
为 760 Kb,这并不重要。如果 CLI 特定功能的占用空间很大,则可以将 CLI 可执行文件提取到依赖于原始包的单独包中。
推荐阅读
- windows - 我需要在程序集中复制命令行参数吗
- python - Bokeh 链接散点图与 CDSView 源数据 - 'hover_color' 仅适用于图中的最后一个字形
- c# - 如何为其中包含另一个方法的方法编写 xUnit 测试?
- javascript - Javascript打开花括号样式更改
- hashicorp-vault - 从 Vault Secret 初始化多个环境变量
- angular - Angular ci 测试在本地的结果与 DevOps 不同
- isabelle - Isabelle 上的函数终止/完整性
- python - (python)代码使用循环编辑文本文件以删除文本文件每一行的一些初始文本
- .net - IdentityServer4 - 连接/令牌端点 - 更改散列类型
- postgresql - 生产环境的真空全面校准。(重新组织主题识别)