繁体   English   中英

Node.js / npm-包中的动态服务发现

[英]Node.js/npm - dynamic service discovery in packages

我想知道Node.js / npm是否包含任何类似于Python setuptools的“入口点”的扩展机制。

因此,简而言之:

  • 有什么方法可以使用npm动态发现其他软件包提供的服务?
  • 如果没有,实现类似的最佳方法是什么? 在主模块的配置文件中指定扩展名似乎是合乎逻辑的解决方案,但我想知道是否可以执行“自动”操作。

我不知道有任何内置的机制可以做到这一点。

一种自己做的可行方法:
我制作了一个小工具(Jumpstart),可以使用占位符从模板快速创建项目支架,为此我使用了一种插件机制。 从根本上讲,Jumpstart脚本搜索名为“ jumpstart-* ”与模块本身安装位置相邻的模块。 因此,它适用于本地和全局安装。 如果在本地安装,它将搜索其他本地模块(在同一级别上),如果是全局安装,它将搜索其他全局模块。

请注意,这里的“搜索”可以归结为简单的fs.exists检查是否安装了具有特定名称的Jumpstart模板模块。 但是,没有任何办法可以真正获得与jumpstart-*模式匹配的所有已安装软件包的完整列表,并一次全部加载。 我还可以在整个目录树中搜索node_modules目录,然后执行相同的操作。 但是,对于此特定程序没有必要这样做。

有关文档,请参见https://npmjs.org/package/jumpstart

此技术的唯一限制是所有模块必须以一致的方式命名。 以某个字符串开头,以某个字符串结尾,类似这样。 通过对软件包内容进行进一步检查,可以检测到任何污染名称空间的恶意软件包:它包含哪些文件? 它的主要模块输出哪种对象? 等等

早午餐还使用插件机制。 这个实际上处理文件扩展名,因此更相关: https : //github.com/brunch/brunch/wiki/Plugins 请参阅例如CoffeeScript插件的来源https://github.com/brunch/coffee-script-brunch/blob/master/src/index.coffee

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM