首页 > 解决方案 > npm 模块 - 是否可以拆分 bin 和 lib 依赖项?

问题描述

假设我已经在 npm 上发布了一个 nodejs 模块。这很简单,您安装并导入它,并给定一个字符串和一个配置对象,它会返回一个字符串。

现在,我想让它作为本地模块和全局模块都可用:我在 package.json 中的 bin 中添加了一个脚本。该脚本导入并使用本地函数并打印结果。为了处理参数和配置对象,我使用 npm yarg 作为依赖项。

问题是这样的:如果我想将我的模块安装为本地,则不需要 yarg 依赖项,因为它仅在模块用作全局时使用。所以很浪费空间。

有没有办法只在我的模块安装为全局模块而不是本地模块时才安装 yarg 依赖项?

标签: javascriptnode.jsnpm

解决方案


无论如何,这不是一种常见的做法。在某些情况下,本地安装的包可以用作 CLI 可执行文件,特别是作为 NPM 脚本的一部分。所有应该在全球范围内使用的流行软件包,npm或者grunt也可以在本地安装和运行。

没有可靠的方法来检测全局安装了一个包。这可以通过检测模块驻留在node_modules全局位置来潜在地完成。可能存在取决于特定系统的警告。

的占用空间yargs为 760 Kb,这并不重要。如果 CLI 特定功能的占用空间很大,则可以将 CLI 可执行文件提取到依赖于原始包的单独包中。


推荐阅读