【问题标题】:Using node cli tool as a library (trimp3)使用 node cli 工具作为库 (trim3)
【发布时间】:2018-01-08 07:21:42
【问题描述】:

我找到了以下库,我想在我自己的 nodejs 文件中使用它:https://github.com/kyr0/trimp3

但是,它是一个 cli 工具,我想将它用作库。

我如何在我自己的 nodejs 代码中使用它,并以编程方式使用它(也就是说,不将它作为我的 nodejs 文件中的 cli 工具执行,而是直接在节点中执行)。

希望你明白我的意思。

【问题讨论】:

  • 看实际代码。 trimp3.jslibtrimp3.js 的一个非常薄的包装器,您可以通过一些修改/猴子修补来随意导入和使用它。甚至 that 也主要是对ffmpeg 的薄包装。
  • 我查看了它,但我不知道如何从我的 nodejs 文件中实际调用它并传递参数。在 trimp3.js 中,如果我理解正确,它会被 require(path.resolve(__filename, '../libtrimp3.js')).cli(); 调用?但是我将如何在一个简单的 nodejs 文件中使用“普通”库调用来做到这一点?
  • 真正能做任何事情的只有函数trimcalcTimes,其余的只是CLI使用。我只需将这几行复制到我自己的项目中并根据需要对其进行调整。完全不需要依赖那个库。

标签: javascript node.js npm ffmpeg command-line-interface


【解决方案1】:

我同意你可以将代码复制到你自己的模块中并根据需要使用它的评论,但是如果你真的想添加这个依赖,你可以在本地安装它

$ npm install trimp3 --save

然后像这样使用 libtrimp3.js 的完整路径要求它:

const trimp = require('./node_modules/trimp3/libtrimp3.js')

您需要根据调用它的位置调整该路径,以确保您拥有正确的相对路径。

** 更新**

根据评论,图书馆期待信息通过 CLI 进入是一个很好的观点。不过,这实际上也不难伪造,因为 process.argv 只是一个数组,但如果你将它用于其他事情,你可能必须考虑到这一点。在需要 trimp3 之前(因为 process.argv 的解析是在文件加载时发生的,很遗憾),您的调用代码必须将数组设置为 trimp3 期望的值。它在 2 处对数组进行切片,所以它会跳过数组中的前两项,剩下的数组将被解析如下:

mp3In: argv[0],
mp3Out: argv[1],
beginTime: argv[2],
endTime: argv[3]

因此,如果您要在要求 trimp3 之前设置 process.argv = ['', '', 'path/to/input', 'path/to/output', 'beginTime', 'endTime'],那么您将在球场上。

这一切都可以追溯到我最初与 cmets 达成的协议,即最好使用这个库,而是从中学习以构建自己的模块。

【讨论】:

  • 如果您查看代码,假设从 CLI 调用是非常硬编码的,专门使用 argv 来读取参数。所以这不是容易...
  • @deceze 更新以说明您的评论,如果这解决了您的问题,请告诉我。
猜你喜欢
  • 2015-11-12
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多