[英]Node.js/npm - dynamic service discovery in packages
我想知道Node.js / npm是否包含任何类似于Python setuptools的“入口点”的扩展机制。
因此,简而言之:
我不知道有任何内置的机制可以做到这一点。
一种自己做的可行方法:
我制作了一个小工具(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.