javascript - 如何使用参数运行 npm {bin : script. js}

标签 javascript node.js npm

我打算制作类似于 lodash 自定义构建的东西。所以总的来说,我想让用户写这样的命令:

lodash category=collection,function

它只使用我指定的类别创建自定义模块

我阅读了一些关于如何使用 npm bin 运行脚本的教程。以防万一我理解有误,我会按照我的想法写下来。

所以如果我有 package.json 这部分:

"main": "bin/index.js",
 "bin": {
   "snippet": "bin/index.js"
 },

npm install -g console 应该监听命令片段,当我编写它时,它运行文件夹 bin 中的脚本 index.js >.

这部分看起来对我来说工作正常。当我的 index.js 中有一些简单的东西时,即 console.log('It Works')

在标准情况下,您想让用户将参数传递给脚本。所以我发现所有参数都应该在变量 process.argv 中。

The process.argv property returns an array containing the command line arguments passed when the Node.js process was launched. The first element will be process.execPath. The second element will be the path to the JavaScript file being executed. The remaining elements will be any additional command line arguments.

所以我只是简单地控制台记录它并运行脚本。

  1. 如果我通过命令 snippet -f -a 运行脚本 输出是:[ 'node', 'path/to/file' ]

  2. 如果我通过 node bin/index.js -f -a 运行脚本 输出为:[ 'node', 'path/to/file', '-f', '-a' ]

我不明白,它的脚本相同但输出不同。但是我尝试看起来当我通过 bin 命令调用脚本时它从不传递参数。

有这方面经验的人吗?并告诉我我做错了什么?

或者还有其他方法可以做到这一点吗?

感谢您的任何建议。

最佳答案

这需要一些时间,但我现在有一个解决方案,所以希望它对以后的人有所帮助。

哪里出了问题:

我注意到我的 Windows 有默认程序来运行 .js 文件设置为 NODE.js 并且因为它当然是所有 .js 的默认设置code> 文件打开时没有参数。

所以在我的例子中,每个 .js 文件都使用 NODE 打开,无论如何,我尝试将其更改为使用 PSPAD 或类似的东西打开,但这基本上是打开编辑器而不是执行文件。

我是如何修复它的:

  1. 我创建了我的 ./bin/index.js 二进制文件(基本上删除了 .js 后缀),而不是直接使用执行 .js 的东西
  2. index 文件之上添加了 #!/usr/bin/env Node
  3. 转到 package.json 并将对 ./bin/index.js 的所有依赖更改为 ./bin/index

哇啦!它有效:)

附注正如我在开始时提到的,我相信也有一个选项可以使用 .js 运行它,但我找不到它。所以,如果有人找到它,请告诉我。 谢谢

关于javascript - 如何使用参数运行 npm {bin : script. js},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38845594/

相关文章:

javascript - 如何在 node.js 中使用 pdfkit 创建带有项目符号列表的文本?

javascript - 继续使用 mergeMap 在 RxJs pipeable 中出错

node.js - 部署到 azure 的 Express.js 应用程序无法连接到云中的 mongoDB

ruby-on-rails - 如何使用 github 分支使用修改后的 Node 模块?

javascript - V8 执行的是解释器生成的字节代码还是 turbofan 编译器生成的二进制代码?

javascript - 将文本框值与模型属性 mvc 进行比较

javascript - Npm - 在 1 个命令行中更新并保存 deps 和 depsDev?

npm audit fix 未修复低漏洞

javascript - ajax动态加载的html页面上的YQL查询

javascript - Node azure blobService.generateSharedAccessSignature() 返回错误的 token