And*_*rit 5 javascript node.js npm
我正在计划做类似lodash自定义构建的东西.所以一般来说我想让用户写命令如下:
lodash category=collection,function
Run Code Online (Sandbox Code Playgroud)
这与我指定的类别一起创建自定义模块
我阅读了一些教程如何使用npm bin运行脚本.万一我理解错了,我会按照自己的想法写出来.
所以如果我有这个部分的package.json:
"main": "bin/index.js",
"bin": {
"snippet": "bin/index.js"
},
Run Code Online (Sandbox Code Playgroud)
我npm install -g控制台应该监听命令片段,当我写它时,它运行index.js文件夹中的脚本bin.
这部分看起来对我来说是正确的.当我在index.js中有一些简单的东西时console.log('It Works').
在标准情况下,您希望让用户将参数传递给脚本.所以我发现所有参数都应该是多变的process.argv.
该
process.argv属性返回一个数组,其中包含启动Node.js进程时传递的命令行参数.第一个元素是process.execPath.第二个元素将是正在执行的JavaScript文件的路径.其余元素将是任何其他命令行参数.
所以我只是console.log它并运行脚本.
如果我通过命令运行脚本snippet -f -a
输出是:[ 'node', 'path/to/file' ]
如果我通过node bin/index.js -f -a
输出运行脚本是:[ 'node', 'path/to/file', '-f', '-a' ]
我不明白,它的相同脚本但输出不同.但是我尝试它看起来就像当我通过bin命令调用脚本时它从不传递参数.
在这里有人有经验吗?并告诉我我做错了什么?
或者另外还有其他一些方法可以做到这一点吗?
谢谢你的任何建议.
这需要一些时间,但我现在有了解决方案,希望它能帮助以后的人。
哪里出了问题:
我注意到我的Windows有默认程序来运行.js文件设置NODE.js,因为它是默认设置,当然所有.js文件都是在没有参数的情况下打开的。
因此,就我而言,.js无论如何,每个文件都使用 NODE 打开,我尝试将其更改为使用 PSPAD 或类似的东西打开,但这基本上是打开编辑器而不是执行文件。
我是如何解决的:
./bin/index.js二进制文件(基本上删除了.js后缀)#!/usr/bin/env node顶部indexpackage.json并将所有依赖项更改./bin/index.js为./bin/index哇啦!有用 :)
ps 正如我在开始时提到的,我相信也有一个选项可以运行它.js,但我找不到它。因此,如果有人找到它,请告诉我。谢谢
| 归档时间: |
|
| 查看次数: |
1329 次 |
| 最近记录: |