我将 yargs 与命令模块一起使用,即每个命令的单独文件,每个命令文件为自己的命令定义exports.command
, 。exports.desc
exports.handler
对于我 60% 的命令,默认情况下它的工作方式很好。但是另外 40% 我想首先使用异步的 TypeORM 连接到数据库,然后仅在建立连接后,执行exports.handler
包装在 .then() 中,这样它就不会在数据库连接之前执行.
问题是,在我的全局入口文件中,一旦定义了所有全局 yargs 选项,并且我执行 .argv for yargs 来解析命令(确定它是 db 还是非 db 命令),它也会exports.handler
立即执行,所以我没有机会先连接到数据库,然后使用 .then 来包装exports.handler
命令代码(对于需要它的 40% 的命令)。
我想避免只为 db 连接添加异步代码到这 40% 的命令文件中的每一个。并且还要避免为所有 100% 的命令连接到数据库,因为其中 60% 的命令不需要它。
我正要进行重大更改,不再使用 yargs 的命令模块……但必须有更简单的方法来做到这一点?
有没有办法告诉 yargs 我想解析命令但还没有执行 exports.handler
?
如果我能弄清楚这一点,那么我可以简单地将需要包装在 .then() 中的命令和不需要的命令分开。